Newsgroup: it.comp.www.asp
Titolo: SELECT ANNIDATE

Ecco il mio stranissimo problema...
in parole povere sto creando un motore di ricerca per un sito WEB, questo
genera una query che è dinamica, quindi varia a seconda delle parole chiave
cercate e se è in AND o in OR. Vi riporto un esempio:
SELECT descrizione,nome,ext,linkhtml,linkfile,cstr(max(maxrilevanza1)) + ';'
+ cstr(max(maxrilevanza2)) as rilevanza FROM(SELECT
descrizione,nome,ext,linkhtml,linkfile,a2.rilevanza as
maxrilevanza1,a3.rilevanza as maxrilevanza2 FROM( SELECT * FROM ((doc as a1
INNER JOIN key as a2 ON a1.iddoc=a2.iddoc) INNER JOIN key as a3 ON
a1.iddoc=a3.iddoc) WHERE a2.key like '*a*' AND a3.key like '*b*' ORDER BY
a2.rilevanza desc,a3.rilevanza desc ) GROUP BY
descrizione,nome,ext,linkfile,linkhtml,a2.rilevanza,a3.rilevanza ORDER BY
a2.Rilevanza desc,a3.rilevanza desc) GROUP BY
descrizione,nome,ext,linkhtml,linkfile ORDER BY (max(maxrilevanza1))
desc,(max(maxrilevanza2)) desc
come vedete esegue SELECT dentro altre SELECT, la stringa SQL è creata da
codice dinamicamente a seconda delle parole chiave inserite per la ricerca.
Il punto è questo, su il server di sviluppo con MDAC ultima versione e IIS4
e NT4 funziona correttamente, restituisce i risultati ecc...ecc...., su
tutte le altre macchine su cui l'ho provato, WIN2000, NT4 con (almeno credo)
le stessissime caratteristiche, non da nessun risultato, cioè restituisce un
RS vuoto, ma non va in errore...
Come mai??? Manca qualcosa, oppure c'è qualcosa di troppo installato? Come
può funzionare su quel server? Il db è un access2000 ma per prova l'ho
convertito anche in 97... non ci capisco più niente e non ho altre soluzioni
per questa query, come posso fare?
grazie
Alberto Gagna
a.g...@regola.it

 per questa query, come posso fare?
La prima prova che devi fare e' stampare la stringa SQL e provarla
direttamente dentro access, se sotto access (quello sul server di produzione
eh?) funziona e restituisce i record che ti aspetti, allora o leggi male il
recordset, oppure la pagina asp va a prelevare dati da un DB vuoto.
Se sotto access funziona, allora prova a stampare a video la proprieta'
recordcount del recordset per vedere se effettivamente dentro c'e' qualcosa,
se si, controlla il modo in cui leggi il recordset, se e' vuoto stai
sbagliando database oppure ti tocca reinstallare MDAC. Altro non mi viene in
mente, scusa.
Buona fortuna.
Andrea

 Andrea

 cavolo....
Mi viene in mente un'altra cosa: non e' che hai messo "On Error Resume NExt"
da qualche parte ed hai "Omesso" la clausola "Option Explicit" ad inizio
pagina? In alternativa pubblica il codice della pagina incriminata, il
problema e' li'. Se il recordset e' pieno e non viene visualizzato nulla, ci
deve essere qualcosa che rompe le scatole.
Ciau
Andrea

 deve essere qualcosa che rompe le scatole.
Non c'è ne OPTION EXPLICIT e non ho messo l'ON ERRORR RESUME NEXT, il punto
unico è che non popola il Recordset e non da errore, è assurdo, è come se
non riuscisse a risolvere query annidate. Ho eseguito la query da ACCESS97 e
anche li restituisce un RST vuoto, mentre su 2000 funziona, ovviamente
quando la esegui dall'applicativo è il server che deve elaborarla, ho
provato a usare il DB in entrambi i formati (97 o 2000), ma nulla :-((
Che cavolo!!! Grazie comunque per la pazienza che hai nel volermi aiutare...
è la prima volta che mi capita una cosa simile, di esperienza nel settore ne
ho parecchia e non mi era mai capitato prima ecco perchè cado dalle nuvole.
CIAO

 ho parecchia e non mi era mai capitato prima ecco perchè cado dalle
nuvole.
Figurati: non e' mai successo neanche a me e si che programmo dall'86
(vabbe' col basic 2.0 del commodore 64), ed e' per questo che devo capire.
Alura.
--->Omettere OPTION EXPLICIT e' come incrociare i flussi per un ghostbuster:
e' male.<---
(metti questa istruzione all'inizio di ogni pagina ASP, fai in modo che
compaia una volta sola o sono guai e scoprirai un sacco di errori che non
credevi che ci fossero)
A parte questa nota folcloristica dovresti postarmi una stringa SQL generata
con la tua applicazione, probabilmente la chiave di tutto e' in cosa chiedi
ad ADO e come.
Ciau
Andrea