Newsgroup: it.comp.appl.access
Titolo: [dilemma expert] dao/ado o funzioni predefinite?

dall'alto della vostra esperienza...
mi piacerebbe sapere se ci sono differenze di prestazioni nell'usare le 
funzioni predefinite di access tipo dlookup, dsum, dmax piuttosto che 
aprire un recordset (ado/dao) opportunamente filtrato  e reperire 
questi dati "a mano".
la stessa cosa vale per le istruzioni in codice sql? nel senso che per 
aggiungere un record è meglio un "insert into" oppure un "rs.addnew" ?
io personalmente utilizzo in pratica solo recordset ma mi hanno fatto 
notare (grazie gabriele bertolucci) che in certi casi un pochino di 
codice sql semplifica la vita. ma a livello di prestazioni?
voi come vi comportate?
-- 
ignazioc

 ignazioc
Le domain functions DLookup, DSum, DCount, etc sono in genere
meno efficienti (molto piů lente) dei corrispondenti metodi alternativi
(VBA, SQL).
Lo stesso dicasi delle funzioni VBA rispetto a quelle SQL.
Quindi nell'ordine SQL, VBA.
Domain functions, salvo casi particolarissimi, da passare nel
dimenticatoio.
Bruno 


Ciao Bruno. Non so se farei massinsert via SQL.
Per quanto riguarda le domainFunctions un po' di tempo fa c'e' stato un 
3D che riportava un po' di dati. Non mi sembra ci fossero grandi 
differrenze  fra la lettura via rs e le funzioni medesime. C'erano 
inoltre dei dettagli interessanti sui comportamenti a seconda che 
fossero tipo ADO o DAO e tra tabelle locali  e linked.
I personaggi coinvolti nel 3D se non ricordo male erano Baraldi, Rancati 
e, con basso profilo ,  il sottoscritto,  sempre se non mi ricordo male, 
il "buon" Baraldi aveva fatto anche un sistemino per testare la cosa, 
immagino sia  nel suo sito.
-- 
ac
y-1=x

Alessandro Cara wrote:
[cut]
P.S.
http://snipurl.com/1vj7t
-- 
ac
y-1=x


Le Funzioni di dominio sono meno performanti in termini assoluti ed il demo
del mio sito lo dimostra:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=218
Detto questo come hai suggerito anche tu, la cosa è da valutare in caso di
Cicli numerosi...
se si parla della singola interrogazione probabilmente può non aver senso
questo discorso
infatti si evince che le differenze sulla singola interrogazione sono
dell'ordine di un centinaio di ms
se si adottano le precauzioni adeguate(vedi tabella aperta sempre per
mantenere aperta la connessione e
se l'interrgoazione avviene su campi indicizzati, cose che peraltro
dovrebbero essere normali ma non tutti applicano).
In caso di cicli corposi invece è doveroso rifletterci.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

Anche questo può essere utile...
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=277


 del mio sito lo dimostra:
Volemo aricomincia' co le supposte?
Non sono uomo di parola le Cdominiofunctions poi non le ho piu' scritte.
;<)
-- 
ac
y-1=x

 y-1=x
[OT] Ma....
Sei in ferie...? (ormai dura da troppo)
In pensione...? (potrebbe essere... al giorno d'oggi...)
In malattia...? (come libero docente sarebbe un pò gravosa)
Stai studiando...? (Se si tratta di NET mi aggrego anzi se mi prendi come
studente a GRATTISSE  gioco anch'io)
Ti sei preso un'anno sabbbatico...? (beata giovinezza...beh sarebbe la 2°
però...)
;-)


 
Urca me sa che gioca la "maggica"!
-- 
ac
y-1=x


Sono senza parole... che robba usi ...?
Deve essere proprio bona...!
Ti mando l'indirizzo spediscimene un pò pure a me... almeno mi svago... e
poi
se funziona sai quanti di questi discorsi facciamo in 2... tu fai [A] io
faccio [B]...


 mantenere aperta la connessione e
Quando faccio un recordset su una tabella SQL da access, noto che ci mette 
un po ad effettuare la connessione, quindi come affermi tu se mantenessi la 
tabella aperta, nel caso in cui dovessi, accedere alla medesima n volte 
dovrei avere dei benefici (non fiscali ;)).
Quindi se su Open della maschera  Mi apro un recordset per leggere i dati 
delle macchine
    Set wrkODBC = CreateWorkspace("", Declaration.constAdminUser, 
Declaration.constPwdAdminUser, dbUseODBC) ' Come utente e password gli passo 
delle costanti
    Set DB = wrkODBC.OpenDatabase("", dbDriverComplete, False, 
Declaration.constStrCnRecordset) ' come stinga di connessione gli passo una 
costante
   ' imposto l'oggetto QueryDef.
    Set qryDef = 
CurrentDb.QueryDefs("Query_Pass-Throgh_MAS_Monitor_Macchine")
    ' imposto la connessione al DB SQL
    qryDef.Connect = Declaration.constStrCnExecute ' stringa di connessione
strSQL = "....:"
    qryDef.SQL = strSQL
    ' Attribuisco il nuovo SQL all'origine dati della maschera.
    Me.RecordSource = "Query_Pass-Throgh_MAS_Monitor_Macchine"
    Me.Requery
Se ho capito bene fino a qui la  tabella è ancora aperta. Siccome questa 
maschera è un monitor di stato delle mie macchine utensili che si refresha 
ogni x secondi, per lasciarla aperta non devo fare ?
    RS.Close
    Set wrkODBC = Nothing
    Set DB = Nothing
e chiudo recorset e connessione solo sull'unload della maschera
Grazie.
Marco
-- 
Marco Papetti
www.shortchannel.it
 Il software di commercio elettronico OpenSource
www.mondoideale.com
  - Prodotti naturali e biologici.


 svago... e
ti spedisco io il novello, e poi vedi come canti e scrivi alla AC ;-)
Daniele

 dovrei avere dei benefici (non fiscali ;)).
Non tanto verso la "tabella" quanto verso il "db".
Li si parlava di BE di tipo MDB.
Per fare cio', in genere, ho una Tabella di nome Dummy (tipo la Dual se 
conosci Oracle) su cui apro un recordset e lo lascio aperto per tutta la 
sessione. Normlmente lo faccio in una funzione di ingresso ("StartUp") 
che uso per fare la "Configurazione" di base dell'applicazione.
Tu descrivi un ambiente con connessione "ODBC" e fai una opendatabase.
Non conosco il comportamento di access in queste condizioni ma "a 
logica", qualora il problema sussistesse, quell' "opendatabase" gia' 
dovrebbe risolvere la situazione.
Chiedo venia per l'intromissione.
-- 
ac
y-1=x

 a me il novello "stimola" l'ugola....canto gli stonelli romani :<))
Certo che mi vuoi male. Alle ottoemezzo di sera che gia' canto "La 
montanara" o "Quel mazzolin di fiori". Dalle nostre parti a quell'ora 
ancora non si e' cenato e tu mi vedi gia' ciondolante e caracollante con 
il fiasco in mano.
Che immagine "mi sono fatto"!
;<)
Comunque se non altro i miei OT qualcuno li legge.
-- 
ac
y-1=x

 > ----------------------------------------------------------------------------
Per semplificare il tutto diciamo che se usi LinkedTable è opportuno
crearsi una tabella fittizia anche vuota con una Form(lato FE) ad essa
connessa sempre aperta i modalità Hidden.
In questo modo la connessione corrente rimane aperta e vedrai che non
ci saranno più le perdite di tempo per l'apertura della connessione,
con ENOMRI vantaggi prestazionali.
Il demo che ho allegato però fà proprio questa cosa come opzione....
@Alex

 y-1=x

 nella metropolitana di Milano ;)
Qui va meglio e fanno uno strudel niente male
http://maps.google.com/maps?f=q&hl=it&geocode=&time=&date=&ttype=&q=namibia,solitaire&sll=37.0625,-95.677068&sspn=33.435463,59.238281&ie=UTF8&ll=-23.891037,16.008196&spn=0.009417,0.014462&t=h&z=16&iwloc=addr&om=1
-- 
ac
y-1=x

 ha scritto nel messaggio 
news:c47bbfd6-3ff7-4566...@q3g2000hsg.googlegroups.com...


Ciao e
Grazie. ho capito e seguirò il tuo consiglio.
Il demo che ho allegato però fà proprio questa cosa come opzione....
Non l'avevo guardato......perchè pensavo si riferisse alla DCount etc, 
rispetto all'SQL.....
@Alex 

 ac
Ciao Alex
Daniele 

 Daniele
Ciao Daniele
@Alex

 ci sarebbero i napoletani, MA chi l'ha visti?
Roberto sta bene, č impegnatissimo con altri Hobbies...
Ciao Daniele
@Alex
Ciao Alex
Daniele 

Alessandro Baraldi ha spiegato il 20/12/2007 :

spiegati meglio...perchè quando uso le linkedtable e non ho nessuna 
maschera (aperta) collegata al mio be access chiude la connessione??
ma allora alla microsoft hanno proprio il pallino della modalità 
disconnessa!!! :)
-- 
ignazioc

 Daniele
Ciao Daniele,
ci sono. Sono stato fuori ufficio per due settimane per lavoro.
Un abbraccio.
-- 
-- 
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access

 ignazioc
Perchè dovrebbe rimanere aperta...?
Poco importa il perchè o percome MS faccia ciò... è così e se lo sai
ti muovi di conseguenza...!
Se invece hai agganci potenti in MS digli di cambiare...
;-)
