Newsgroup: it.comp.appl.access
Titolo: Lentezza progetto di access (adp) con sql server

Ciao a tutti,
Ho un database MDB che vorrei trasformare in adp per collegarlo a sql
server; per valutare se la cosa fosse conveniente ho cominciato a
trasportare tutte le tabelle (con relazioni, vincoli, chiavi ed indici)
su sql server e a creare un adp nuovo collegato a queste.
Ho scritto una store procedure abbastanza semplice che ritorna circa
5000 record da una tabella con 12 campi (numerici, text e date). Su
questa query ho cominciato a costruire un report semplicissimo (i campi
mesi in fila e basta) che viene lanciato con gli stessi tempi di
access.
Il problema sorge quando nel report comincio a inserire dei
ragruppamenti e delle funzioni di aggregazione: solo inserendo due
ragruppamenti ed una dlookup i tempi di esecuzione sono passati da 15
secondi a 1 minuto e 30; usando poi lo stesso report che adesso uso con
access (ci sono 5 ragruppamenti e due dcount nel corpo) sono passato da
30 secondi ad oltre 3 minuti.
Problemi sulla rete non ce ne sono, dato che la query viene eseguita
istantanemente, il problema mi pare che sorga quando access comincia a
lavorare. Quindi mi chiedo: quando da access richiamo una sored
procedure i dati vengono spediti tutti da sql a access? Se sì perchè
ci mette molto più tempo a lavorare su questi dati piuttosto che sulla
stessa query eseguita sulle tabelle in locale dell'mdb?
C'è qualcosa che sbaglio o che mi sfugge?
Tenendo conto che il report che ho provato è uno dei più semplici che
ho costruito non so se il progetto di access sia la scelta che fa per
me: se i tempi aumentano in quel modo tutti gli utenti vengono menarmi
alla prima volta che lanciano un report.

 alla prima volta che lanciano un report.
Spesso le query  origini dati di maschere e report vanno ripensate al fine
di sfruttare la caratterisitiche di SQL Server e di minimizzare il traffico
di rete.
-- 
Cinzia
---------------------------------------
|  
http://www.riolab.org
  |
---------------------------------------

di rete.
La query si limita a pesacre da una singola tabella ponendo una
condiziona su un campo data (beween  1-1-2006 and 31-12-2006). Ho usato
questa proprio perchè era la più semplice da portare in sql server.

 accesso su un db in locale.
emm. no Cinzia, stiamo parlando di un progetto ADP, quanto dici è valido se
fai una query con quelle funzioni in un MDB con le tabelle allegate via ODBC
.
Nell' ADP il Dcount viene risolto dal server con l'istruzione
----
SELECT Count(*) AS C1 FROM "Tabella" WHERE ....
----
e il Dlookup con
----
SELECT NomeCampo AS C1 FROM "Tabella" WHERE ......
----
Quindi il traffico di rete è relativo ai byte necessari per l'invio del
comando Select e ai pochi byte della risposta.
E' vero che sarebbe meglio ottenere i dati necessari direttamente dalla Sp,
questo per evitare di inviare per ogni riga del report le istruzioni sopra,
però in un progetto ADP, i Dlookup e Dcount non implicano la lettura di
tutta la tabella e l'elaborazione lato client.
Ciao
-- 
Giorgio Rancati
[Office Access MVP]

questa proprio perchč era la piů semplice da portare in sql server.
Ciao Sauron,
hai detto che come origine record del report usi una stored procedure.
potresti mostrare il suo codice ?
Come fai a passafre al report le date da filtrare ?


 Come fai a passafre al report le date da filtrare ?
ALTER PROCEDURE test.StoredProcedure1
(@date datetime)
AS SELECT          test.PROVA.*
FROM              test.PROVA
WHERE          (Data >= @date)
i parametri li scrivo a mano quando lancio la query ed il report

 questo per evitare di inviare per ogni riga del report le istruzioni sopra,
La cosa farebbe piacere anche a me, ma spesso in un report devo
inserire dei dati che non centrano nulla con la query da cui pesca dati
e non mi sembra il caso di inserire un sottoreport solo per un numero.


E dire che l'avevo letto anche recentemente.
I casi sono due o la mia allergia alle Dlookup mi fanno attribuire loro
performance anomale anche quando non è vero oppure è solo la vecchiaia! :-)


 ---------------------------------------
E' sicuramente la 1° che hai detto, le donne non invecchiano, quello
è il whisky, le donne maturano...! ;-)
@Alex

 performance anomale anche quando non è vero oppure è solo la vecchiaia!
:-)
E' sicuramente la 1° che hai detto, le donne non invecchiano, quello
è il whisky, le donne maturano...! ;-)
Siamo in vena di "lisciate", eh?    ;-)
Saluti
P.S:  A proposito di whisky, tu sei astemio se non ricordo male...

 P.S:  A proposito di whisky, tu sei astemio se non ricordo male...
Chi mai ha messo in giro questa menzogna...? Sarà stato Daniele...!
Normalmente non bevo SuperAlcolici, ma mi piace molto il Rum
invecchiato, Armagnac o Cognac di ottima qualità, in ogni caso
apprezzo molto i Vini importanti... non bevo quasi mai vini da pasto,
ora non sò.... se questo significa astemio si lo sono...! ;-)
@Alex

e non mi sembra il caso di inserire un sottoreport solo per un numero.
non ho parlato di sottoreport
:-)
ho detto che si potrebbe risolvere la cosa direttamente nella Sp.
Al posto della Dlookup, basterebbe mettere la tabella interessata in join
con quella principale che alimenta il report ed esporre nella select il
campo necessario.


 performance anomale anche quando non è vero oppure è solo la vecchiaia!
:-)
sicuramente è allergia
:-)


 i parametri li scrivo a mano quando lancio la query ed il report
E' molto strano il tempo di risposta che rilevi, alla peggio arrivo a 15
secondi usando un report con 3 intestazioni gruppo e con 52.000 record.
Ovviamente ci mette 15 secondi quando clicco per andare all'ultima pagina
(il report ha 1119 pagine), la prima pagina esce istantaneamente.
Appurato che il server non c'entra nulla, che caratteristiche ha la macchina
Client?


 P.S:  A proposito di whisky, tu sei astemio se non ricordo male...
ricordi male!   moolto male....
se pensavi di mandargli un goccetto per assaggio....non hai scuse :<))
Chi mai ha messo in giro questa menzogna...? Sarà stato Daniele...!
No! io ti conosco!  :<))
so che ogni tanto con Max Piubelli organizzi delle bevute ^___^
Ah le malelingue!
Normalmente non bevo SuperAlcolici, ma mi piace molto il Rum
invecchiato, Armagnac o Cognac di ottima qualità, in ogni caso
apprezzo molto i Vini importanti... non bevo quasi mai vini da pasto,
ora non sò.... se questo significa astemio si lo sono...! ;-)
certo non bevi grappa e alcool puro ;)
@Alex
Ciao Alex
Daniele

Normalmente non bevo SuperAlcolici, ma mi piace molto il Rum
invecchiato........
allora qualche volta verrai a una delle nostre festicciole
----
http://blogs.dotnethell.it/lorenzo/ShowImage.aspx?ID=607
http://blogs.dotnethell.it/lorenzo/ShowImage.aspx?ID=609
http://blogs.dotnethell.it/lorenzo/ShowImage.aspx?ID=614
----
:-)


 Daniele
Ehehehe.... ciao Daniele, ero sicuro che avresti letto....!
;-)
@Alex

giorgio rancati ha scritto:

Ma allora degustate cose serie....
Beh sarà un piacere farvi compagnia, soprattutto dopo il 2° o 3°
test....
;-)
@Alex

 Client?
Centrino a 1,73 Ghz e 512 MB di RAM