Newsgroup: it.comp.www.asp
Titolo: Sono impazzito con dei Memo

Salve gente,
questo sabato pomeriggio lo passero' alla ricerca della verita' su
un mistero :-D
Due mesi fa ho consegnato una applicazione ad un tour operatore che
si occupa di incoming per alcune delle principali citta' italiane.
La parte visible all'utente permette di scegliere da un elenco di
citta', leggerne un apresentazione e una lista di eventuali alberghi
"preferiti" e in un altra parte della pagina vedere tutta la lista
degli alberghi "convenzionati".
La presentazione di questa pagina e' composta da una serie di testi;
una descrizione vera e propria, presenza e collegamenti di un
aeroporto, manifestazioni, tariffe particolari per i bambini, ecc.
Il cliente immette i testi da apposite pagine di amministrazione che
consentono anche di aggiungere/modificare/eliminare record riferiti
a citta', alberghi, tariffe degli alberghi, periodi di alta e bassa
stagione per gli alberghi e altre cosette.
Non potendo stabilire univocamente e a priori la lunghezza massima
delle parti di testo ho preferito lavorare con dei campi Memo
(lavoro su un db Access).
Insomma niente di particolarmente complicato na che funzionava.
Ieri con sorpresa scopro che la pagina delle presentazioni delle
citta' non visualizza piu' i testi...
Il codice che ho scritto discrimina innanzitutto due campi (in campo
ID e il riferimento alla citta') poi, verifica se gli altri campi
contengono un qualche valore e, nel caso, stampa una frase (in
genere avvisi) e poi il contenuto vero e proprio del campo.
Tutte le verifiche sono contenute in un ciclo For Each / Next che mi
va a controllare tutti i campi.
Se il campo si chiama in un certo modo e se non e' vuoto, stampa
l'avviso e poi il contenuto del campo...
If Item.Name =  "nome_da_analizzare" AND Item.Value <> "" Then ecc.
ecc. (quello e' solo uno dei modi che ho provato tra cui NOT
IsNull(Item) ecc ecc)
Insomma, dopo due mesi di funzionamento regolare (testimoniato dal
fatto che il cliente ha pagato regolarmente e che ha utilizzato il
tutto per fare dimostrazioni in giro per il mondo), pare proprio che
il codice non riesca piu' a "valutare" il contenuto del campo.
Tutto ritorna normale se cambio il tipo di campo da Memo a Text.
A scanso di equivoci ho ricopiato il tutto sulla mia macchina di
produzione senza ottenere alcuna differenza nelr isultato finale.
Intanto che vado a cercare il bandolo della matassa, avete avuto
qualche esperienza simile?
Claudio

qualche esperienza simile?
guarda, a me con i memo succede questo:
' setto un recordset su una tabella che contiene un campo memo
dim pippo
dim pluto
pippo = rst("campomemo")
pluto = rst("campomemo")
response.write pippo ' me lo scrive
response.write pluto ' non scrive niente...
per cui tutti i campi memo, appena arrivato sul record giusto, li
appoggio in una variabile ed uso quella.  prova anche tu...

E' un problema che ho riscontrato anch'io e risolto allo stesso modo.
C'è poi un articolo M$ che dice che i campi memo DEVONO essere riportati
come ultimi campi richiesti dalla query;
per meglio dire una query del tipo "select pippo.memo, pippo.testo from
pippo" potrebbe NON tornare il valore memo mentre la query "select
pippo.testo, pippo.memo from pippo" si.
Ho visto questo problema solo durante il porting di un'applicazione da
Access97 a SQL 7 e l'ho risolto come suggerito da M$.
                        Alessio
------------------------------------------------------------------------
www.e-project.it
 
aga...@e-project.it

 appoggio in una variabile ed uso quella.  prova anche tu...
Ti ringrazio, seguiro' il tuo consiglio
Nel frattempo ho notato diversi problemi e ho trovato, con google,
che in effetti questo problema e' stato trattato spesso anche sul ng
(scusate quindi se non ho controllato prima ma ero sull'orlo della
nevrastenia a forza di ricontrollare e provare).
Oggi in compenso  ho fatto la prova di gestire il tutto con MySQL
.... non ci provate! Se il problema e' gestire valori in campi in cui
sia ammesso NULL...siete rovinati :-D e non risolvete un bel
niente... la verifica del valore non la potrete fare lo stesso se
questo e' NULL
Quello che mi sconvolge e' capire perche' ha funzionato per 2/3 mesi
senza problemi...
Quando lo scopro, vi aggiorno
Claudio


Ero a conoscenza dei consigli di MS nello strutturare cosi' le query quando
sono compresi campi memo.
Ho risolto anche io come suggerito (valore del campo memo assegnato ad una
variabile alla prima occasione utile, pena la perdita del valore).
Certo e' che uno cerca sempre di fare le cose in maniera tale da non dover
ritoccare il codice se cambia la struttura del database (parzialmente,
ovvio) e poi bisogna perdere tempo due giorni per mettersi li' a studiare
come risolvere un simile problema per poi dedurre che devi  fare un
banalissimo (e poco scalabile) variabile = valore del campo(x)
Grazie a tutti e due
Claudio

banalissimo (e poco scalabile) variabile = valore del campo(x)
be', considera che da piu' parti si consiglia comunque di appoggiare i
valori dei capi dei recordset in delle variabili.
questo perche' la "fatica" che fa il server a manipolare variabili e'
inferiore a quella che fa per andare a leggere la struttura di un
recordset ed estrarne quel campo particolare.  allora se usi piu'
volte il valore di un campo tanto vale fargliela fare una volta
sola...

 sola...
Verissimo, ero convinto che come facevo io non accedessi piu' di una volta
ai campi presi in considerazione (il recordset risultante dalla query e'
composto da un solo record)
Claudio