Newsgroup: it.comp.lang.visual-basic
Titolo: Access 97 bloccato su query "complessa"!

Buongiorno a tutti,
vorrei sapere se vi e' capitato e/o sapete come risolvere questo problema:
ho un db Access97 in cui ho una query un po' complessa (neanche tanto), che
ha come sorgenti altre 6 query:
1) ReportDimensioniPerGriglia
2) ReportProdottiBlocco1
3) ReportProdottiBlocco2
4) ReportProdottiBlocco3
5) ReportProdottiBlocco4
6) ReportProdottiBlocco5
la prima e' in JOIN con tutte le altre 5.
l'SQL della query e' questo:
SELECT DISTINCTROW ReportDimensioniPerGriglia.Dimensioni,
ReportProdottiBlocco1.Codice_parte, ReportProdottiBlocco1.Prezzi,
ReportProdottiBlocco1.Pezzi, ReportProdottiBlocco2.Codice_parte,
ReportProdottiBlocco2.Prezzi, ReportProdottiBlocco2.Pezzi,
ReportProdottiBlocco3.Codice_parte, ReportProdottiBlocco3.Prezzi,
ReportProdottiBlocco3.Pezzi, ReportProdottiBlocco4.Codice_parte,
ReportProdottiBlocco4.Prezzi, ReportProdottiBlocco4.Pezzi,
ReportProdottiBlocco5.Codice_parte, ReportProdottiBlocco5.Prezzi,
ReportProdottiBlocco5.Pezzi, ReportProdottiBlocco1.FLGGB,
ReportProdottiBlocco2.FLGGB, ReportProdottiBlocco3.FLGGB,
ReportProdottiBlocco4.FLGGB, ReportProdottiBlocco5.FLGGB,
ReportDimensioniPerGriglia.DimensioniSC, ReportDimensioniPerGriglia.ShowSC,
ReportProdottiBlocco1.PrezzoEuro, ReportProdottiBlocco2.PrezzoEuro
FROM ReportProdottiBlocco5 RIGHT JOIN (ReportProdottiBlocco4 RIGHT JOIN
(ReportProdottiBlocco3 RIGHT JOIN (ReportProdottiBlocco2 RIGHT JOIN
(ReportProdottiBlocco1 RIGHT JOIN ReportDimensioniPerGriglia ON
ReportProdottiBlocco1.Dimensioni = ReportDimensioniPerGriglia.Dimensioni) ON
ReportProdottiBlocco2.Dimensioni = ReportDimensioniPerGriglia.Dimensioni) ON
ReportProdottiBlocco3.Dimensioni = ReportDimensioniPerGriglia.Dimensioni) ON
ReportProdottiBlocco4.Dimensioni = ReportDimensioniPerGriglia.Dimensioni) ON
ReportProdottiBlocco5.Dimensioni = ReportDimensioniPerGriglia.Dimensioni
ORDER BY ReportDimensioniPerGriglia.Diametro,
ReportDimensioniPerGriglia.Fascia, ReportDimensioniPerGriglia.indice;
i campi sono di tipo:
Codide_parte: TEXT(50)
Prezzi: Valuta
Pezzi: numerico double
FLGGB: TEXT(20)
ShowSC: BOOLEAN
Cosi' la query funziona.
Ma ora ho la necessita' di aggiungere 5 campi valuta (per l'EURO, guarda
caso :-)
I 5 campi valuta li prendo dalle query ReportProdottiBloccoX (queste 5
queries funzionano bene).
Il problema e' che se aggiungo fino a 2 campi euro, la query funziona
ancora, ma se ne aggiungo di piu' (3,4,5) Access si blocca all'esecuzione
della query e devo killarlo.
Mi sapreste dire dove puo' essere il problema?
C'e' qualche stupida limitazione nel numero dei campi, nel tipo dei campi o
nella complessita' di una query in Access 97?
--
Roal Zanazzi
z...@iol.it


Nella complessita`, specialmente utilizzando sub-query, e con
tutta probabilita` il jet ha anche un limite ben preciso
nella lunghezza dello statement sql accettato oltre ad un limite
di campi in una query (mi pare 255, se guardi sull' help alla
voce "Specifiche delle Query" trovi tutti i dati precisi).
Non vedo altra strada praticabile se non una semplificazione della
query.


Prova a semplificare la vita ad Access (complicandoti la tua):
io proverei a generare sei tabelle temporanee, con i dati delle sei query.
Eventualmente sulle tabelle puoi impostare degli indici sui campi usati nei
join.
The Force


Pensavo che le tabelle temporanee (o qualcosa di simile) le facesse gia'
Access (dopotutto le query embedded dovrebbero essere piu' o meno delle
view, giusto?)
Comunque non posso farlo.. o meglio, potrei ma la cosa e' complicata dalla
possibilita' di utilizzo contemporaneo multi-utente (quindi dovrei usare un
set di table temporanee per ogni eventuale utente...)
Sinceramente Access mi delude sempre piu'...
Dopotutto la mia query non mi sembra avere una complessita' "spaziale"...
E poi, se proprio e' troppo complessa per Access, mi aspetterei un messaggio
di errore o un avviso, invece Access si pianta proprio e non c'e' verso di
risvegliarlo!
--
Roal Zanazzi
z...@iol.it

 risvegliarlo!
Purtroppo Access è brutto e cattivo !!!
Antonio

 set di table temporanee per ogni eventuale utente...)
io le tabelle temporanee in multiutenza le uso eccome!
è anche vero però che ho separato la base dati comune (MDB che risiede su
server) dalle GUI + tabelle temporanee (MDB che risiedono sui PC client).
se hai l'intera applicazione su server, potresti arricchire la tabella
temporanea che riceve il recordset generato dalla query con un campo che
contiene il login dell'utente che si è connesso e che utilizza la tabella
temporanea.
questo però lo puoi fare se l'applicazione viene lanciata da Access o dal
Runtime residenti sulla macchina locale e se hai previsto un codice di
login per ogni utente.
.... !!!!!!!!!
beh.... è proprio un bel casino!
buon lavoro
andrea

Volevo solo dire che ho risolto il problema.
Ho semplicemente modificato le join (da RIGHT le ho trasformate tutte in
LEFT), modificando l'ordine delle 6 query sorgenti di dati.
Adesso Access non si impianta piu' e la query funziona.
Grazie comunque a coloro che hanno tentato di aiutarmi.
--
Roal Zanazzi
z...@iol.it

io le tabelle temporanee in multiutenza le uso eccome!
Forse non mi sono spiegato bene.
Non e' che non sia possibile farlo, e' che non ho il tempo di farlo, dato
che il progetto deve essere consegnato prima possibile, e non avrei mai
pensato che Access si impiantasse su una query come la mia.
Comunque ho risolto modificando l'ordine dei JOIN.
Grazie
--
Roal Zanazzi
z...@iol.it

 Adesso Access non si impianta piu' e la query funziona.
Ma allora quel cattivone di Access non era poi cosě scrauso !!!!
Forse la colpa era dell'utilizzatore...
Eh eh eh
Antonio

Antonio Biso ha scritto nel messaggio <01be4857$30b86ca0$25676ac0@chief>...

BOOONI !
Prima di tutto, si diceva che lo scrauso era il Jet... e ora il gioiello č
diventato Access?
Eppoi, diciamocelo francamente, a chi non č mai capitato di fare delle query
che si inchiodavano, o che si fa prima a eseguirle a mano con carta e penna?
Che l'amico Roal abbia poco tatto č indubbio, ma cerchiamo tutti quanti di
evitare commenti personali, che dici?
The_Force

 evitare commenti personali, che dici?
Dico che io rispondo solo, ma non comincio mai...
Antonio