Salve a tutti ho un problema spinoso...
spero di essere chiara nella spiegazione.
Abbiamo creato un db sql per una mailing list. Dopo aver fatto la tabella, il db è stato riempito di record provenienti da altri databases, unendoli in uno solo, quello nuovo appunto.
Adesso ho preparato un'interfaccia che permetterà agli iscritti di modificare i dati delle loro precedenti iscrizioni, aggiungendo le classiche scelte tipo hobby, titolo di studio, professione, ecc.... Insomma l'iscritto arruverà e, inserendo la sua email come login ,accederà alla sua scheda e la compilerà accettando o meno di voler ricevere la mailing list.
Il problema dove sta? Praticamente la tabella del db SQL contiene campi varchar (nome, cognome, indirizzo, ecc...) e campi int (questi ultimi per contenere le risposte dei menù a tendina degli interessi vari). Una volta riempiti procedo con l'UPDATE del recordset appena richiesto dall'iscritto quando è entrato nell'interfaccia usando la sua email (UNIVOCA). Praticamente eseguo l'update e, NEL CASO DI CAMPI VUOTI, mi scrive nei varchar assolutamente niente, cioè vuoto, ma non null, e negli int mi scrive uno 0 (zero). FIn qui niente di male se non fosse che, al momento di una nuova eventuale richiesta di visualizzazione del record modificato mi crasha la pagina con questo errore
----------------------------------------------
Tipo di errore:
ADODB.Recordset (0x800A0BCD)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/MailingList/dettaglio2.asp, line 126
----------------------------------------------
dove la riga 126 è l'esecuzione della mia query di selezione. Ovviamente il record esiste, e non è nè BOF nè EOF, SE VADO NELLA TABELLA SQL E CAMBIO IL 'VUOTO' DEI VARCHAR IN NULL E LO ZERO DEGLI INT IN NULL IL RECORDSET SI RIAPRE NUOVAMENTE COME PER MAGIA.
Non capisco sinceramente cosa stia ccadendo. ovviamente ho fatto molte prove, per esempio, nella request dei campi, prima dell'update, ho messo dei controlli di questo tipo:
----------------------------------------------
INDIRIZZO= request("indirizzo")
if INDIRIZZO&"x"="x" then
INDIRIZZO=null
end if
----------------------------------------------
ma apparentemente proprio il null non me lo vuole scrivere nella tabella quando i campi sono vuoti.
Secondo voi dove sto sbagliando? Nell'ASP? Oppure il db ha subito qualche strana modifica (e magari è corrotto) quando sono stati inseriti i recordset dagli altri db? E poi un'altra strana cosa, nell'update, DEVO utilizzare [titolo_studio ='"&titolo_studio&"'] con apici singoli e poi doppi, che in asp significano stringa, quando inserisco i valori dei menù a tendina nei campi INT....ma int non è numerico? e quindi dovrei usare solo l'apice doppio.....
AIUTO!
Grazie a tutti della pazienza nella lettura e spero di essere stata chiara.
Polgara la Maga