19 messaggi dal 02 gennaio 2002
Mi scuso (in particolare con i moderatori) per la ripetizione del post ma il problema che descrivo di seguito ha raggiunto i livelli di guardia (non riesco praticamente più a lavorare). Pubblico il messaggio qui in modo che sia caricato automaticamente anche su microsoft.public.it.sql (non mi ero reso conto di aver ricevuto una risposta il 5 ottobre scorso)...

---

Anni fa ho constatato che in certi casi, creando un recordset su SQLServer 2000 e facendo visualizzare (con Response.Write) un valore di tipo nvarchar in una pagina ASP, capitava che il valore non comparisse o risultasse 'non usabile' dal codice. Mi spiego meglio: il valore in DB esisteva per l'interprete ASP non lo rilevava.
Esempio: poniamo che io stessi cercando di far comparire il valore dentro il campo 'miocampo' del Recordset; si davano due casi:


1. Facendo Response.Write subito dopo l'apertura del Recordset il valore di miocampo COMPARIVA:

rs.open strSQL,cn
Response.Write rs("miocampo")


2. Facendo Response.Write di miocampo magari dopo qualche innocua riga di codice o dopo il Response.Write di altri campi del Recordset, il valore di miocampo NON COMPARIVA:

rs.open strSQL,cn
Response.Write rs("campo1")
Response.Write rs("campo2")
Response.write rs("miocampo")



In seguito sono riuscito a risolvere il problema: cambiando il tipo di campo
da nvarchar a varchar, i dati tornavano ad essere visualizzati alla
perfezione (senza cambiare assolutamente nulla nel codice ASP).

Tutto bene allora ? No. Oggi ho cominciato a lavore su una pagina ASP che
interroga un db SQL2005... il problema si è ripresentato; l'aggravante è che
non solo non vengono visualizzati correttamente i campi nvarchar, ma adesso
nemmeno i semplici varchar. Quindi sembra proprio che non ci sia speranza di
poter usare SQL2005 con pagine ASP senza mettere il valore di "miocampo" in
una variabile SUBITO dopo l'apertura del recordset:

rs.open strSQL,cn
miocampo=rs("miocampo")

Dopo chiaramente la variabile è usabile in ogni parte della pagina;
rs("miocampo") NO, dopo poche righe dall'apertura del recordset
improvvisamente "muore".
Qualcuno ha una soluzione o anche solo una spiegazione ragionevole di questo
fenomeno ?

Grazie a chi vorrà rispondere.
Newcomsas
19 messaggi dal 02 gennaio 2002
Come promesso ho preparato un esempio che permette di verificare il
problema che descrivevo nel mio thread.
Questo è l'indirizzo per il file zip che contiene il materiale:

http://217.56.125.126/problemadb.zip

In realtà ho usato nell'esempio una tabella con campi nvarchar
anzichè campi varchar, ma come dicevo in SQL2005 il comportamento
anomalo si produce in ogni caso.
Faccio notare che ho provato a far girare le pagine asp su diverse
macchine (mantenendo il puntamento allo stesso db) e il problema si è
sempre verificato; quindi escluderei un problema di un particolare IIS.
A mio avviso da qualche parte c'è un bug nella comunicazione tra
l'oggetto recordset di VBScript e il database...

Grazie per la collaborazione
Newcomsas
635 messaggi dal 06 settembre 2002
Ciao,
premesso che non ho un SQLSERVER installato,
premesso che dal tuo file asp di esempio non vedo la chiusura di cn e rs con le relative istruzioni set cn=Nothing e set rs=Nothing,

hai provato a fare una cosa del tipo

strSQL="SELECT * FROM Links WHERE ID_link=" & ID_link
rs.open strSQL,cn

STR_LINK=rs("link")
TXT_COMMENTO=rs("commento")
Response.Write("STR_LINK="&STR_LINK&"<br>"&VbCrLf)
Response.Write("TXT_COMMENTO="&TXT_COMMENTO&"<br>"&VbCrLf)



In questo modo vedi se TXT_COMMENTO viene visualizzato correttamente.

Non vorrei che, prima di visualizzare la parte del form, chiudi rs o, peggio ancora lo distruggi (set rs=Nothing).

Ciao

OJD

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.