Question Rapidite

Le
jc.bichot
Bonjour, voilà quelques petites questions que je me pose concernant la
rapidite.

Pour mettre à jours une table avec une autre,quel est le plus rapid :
A - dbs.Execute ("INSERT INTO stat ( IDART ) SELECT article.IDART FROM
article GROUP BY article.IDART")

B - Set rs = dbs.OpenRecordset("select idart from Article group by
idart", dbOpenDynaset)
Set rsb = dbs.OpenRecordset("Stat", dbOpenDynaset)

Do Until rs.EOF
rsb.Edit
rsb.Fields("idart").Value = rs.Fields("idart").Value
rsb.Update
rs.MoveNext
Loop

Dans un formulaire, j'ai un sous-formulaire qui me sert de grille de
saisie et à chaque fois que saisi une réf dans un champ je vais
chercher dans une ou plusieurs table si celle-ci existe.
Est-il mieux que j'ouvre et ferme ma ou mes tables en recordset à
chaque demande (donc au niveau de mon champ) ou que je les ouvre et
ferme au niveau de mon formulaire une seule fois et que je fasse un
movefirst (par exemple) pour chaque recherche au niveau de mon champ.

Y à t'il un intérêt de faire un nothing après un close et si oui le
quel.

Voilà j'en ai plein d'autres mais déjà avec celle-là je pense que je
pourrai accélère ma base qui commence à avoir des temps de reaction
bizarre.

je connait ce forum depuis peu mais il est reelement genial avec des
personnes tres serviable. BRAVO

d'avance merci beaucoup
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Pierre CFI
Le #4227001
bonjour
d'une maniére générale une instruction sql sera plus rapide
pour le 2, tu es sur d'avoir des relations entre tes tables ??
pour 3, c'est plus une histoire de libérer de la mémoire

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"jcharles"
Bonjour, voilà quelques petites questions que je me pose concernant la
rapidite.

Pour mettre à jours une table avec une autre,quel est le plus rapid :
A - dbs.Execute ("INSERT INTO stat ( IDART ) SELECT article.IDART FROM
article GROUP BY article.IDART")

B - Set rs = dbs.OpenRecordset("select idart from Article group by
idart", dbOpenDynaset)
Set rsb = dbs.OpenRecordset("Stat", dbOpenDynaset)

Do Until rs.EOF
rsb.Edit
rsb.Fields("idart").Value = rs.Fields("idart").Value
rsb.Update
rs.MoveNext
Loop

Dans un formulaire, j'ai un sous-formulaire qui me sert de grille de
saisie et à chaque fois que saisi une réf dans un champ je vais
chercher dans une ou plusieurs table si celle-ci existe.
Est-il mieux que j'ouvre et ferme ma ou mes tables en recordset à
chaque demande (donc au niveau de mon champ) ou que je les ouvre et
ferme au niveau de mon formulaire une seule fois et que je fasse un
movefirst (par exemple) pour chaque recherche au niveau de mon champ.

Y à t'il un intérêt de faire un nothing après un close et si oui le
quel.

Voilà j'en ai plein d'autres mais déjà avec celle-là je pense que je
pourrai accélère ma base qui commence à avoir des temps de reaction
bizarre.

je connait ce forum depuis peu mais il est reelement genial avec des
personnes tres serviable. BRAVO

d'avance merci beaucoup


Raymond
Le #4226991
Bonjour.

1-
sans contestation, une requête quelle qu'elle soit, sera toujours plus
rapide que du code vba exécutant le même process.

2- quand on recherche une existence de référence, en général, on ne
recherche pas mais on utilise une seule table par une liste modifiable(pas
de code à écrire). dans ton cas on recherche par findfirst sur chaque table
mais je vois mal la présence de deux tables de références.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"jcharles" news:
Bonjour, voilà quelques petites questions que je me pose concernant la
rapidite.

Pour mettre à jours une table avec une autre,quel est le plus rapid :
A - dbs.Execute ("INSERT INTO stat ( IDART ) SELECT article.IDART FROM
article GROUP BY article.IDART")

B - Set rs = dbs.OpenRecordset("select idart from Article group by
idart", dbOpenDynaset)
Set rsb = dbs.OpenRecordset("Stat", dbOpenDynaset)

Do Until rs.EOF
rsb.Edit
rsb.Fields("idart").Value = rs.Fields("idart").Value
rsb.Update
rs.MoveNext
Loop

Dans un formulaire, j'ai un sous-formulaire qui me sert de grille de
saisie et à chaque fois que saisi une réf dans un champ je vais
chercher dans une ou plusieurs table si celle-ci existe.
Est-il mieux que j'ouvre et ferme ma ou mes tables en recordset à
chaque demande (donc au niveau de mon champ) ou que je les ouvre et
ferme au niveau de mon formulaire une seule fois et que je fasse un
movefirst (par exemple) pour chaque recherche au niveau de mon champ.

Y à t'il un intérêt de faire un nothing après un close et si oui le
quel.

Voilà j'en ai plein d'autres mais déjà avec celle-là je pense que je
pourrai accélère ma base qui commence à avoir des temps de reaction
bizarre.

je connait ce forum depuis peu mais il est reelement genial avec des
personnes tres serviable. BRAVO

d'avance merci beaucoup


Francois
Le #4224531
Bonjour,

Je ne suis pas très d'accord avec la première remarque, et j'y mettrais
quelques nuances.
En réseau, il nous est plusieurs fois arrivé, mes collègues et moi, à
transformer des requêtes SQL en leur équivalant VBA pour optimiser des temps
de réponse qui duraient près de 1 min 30 et de les faire descendre à 10 à 15
secondes selon les cas.
Il est vrai aussi que parfois la vitesse ne changeait pas, ou peu, il
fallait alors changer d'algorithme, passer par des tables locales...

@+

François

"Raymond"
Bonjour.

1-
sans contestation, une requête quelle qu'elle soit, sera toujours plus
rapide que du code vba exécutant le même process.

2- quand on recherche une existence de référence, en général, on ne
recherche pas mais on utilise une seule table par une liste modifiable(pas
de code à écrire). dans ton cas on recherche par findfirst sur chaque
table

mais je vois mal la présence de deux tables de références.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"jcharles" news:
Bonjour, voilà quelques petites questions que je me pose concernant la
rapidite.

Pour mettre à jours une table avec une autre,quel est le plus rapid :
A - dbs.Execute ("INSERT INTO stat ( IDART ) SELECT article.IDART FROM
article GROUP BY article.IDART")

B - Set rs = dbs.OpenRecordset("select idart from Article group by
idart", dbOpenDynaset)
Set rsb = dbs.OpenRecordset("Stat", dbOpenDynaset)

Do Until rs.EOF
rsb.Edit
rsb.Fields("idart").Value = rs.Fields("idart").Value
rsb.Update
rs.MoveNext
Loop

Dans un formulaire, j'ai un sous-formulaire qui me sert de grille de
saisie et à chaque fois que saisi une réf dans un champ je vais
chercher dans une ou plusieurs table si celle-ci existe.
Est-il mieux que j'ouvre et ferme ma ou mes tables en recordset à
chaque demande (donc au niveau de mon champ) ou que je les ouvre et
ferme au niveau de mon formulaire une seule fois et que je fasse un
movefirst (par exemple) pour chaque recherche au niveau de mon champ.

Y à t'il un intérêt de faire un nothing après un close et si oui le
quel.

Voilà j'en ai plein d'autres mais déjà avec celle-là je pense que je
pourrai accélère ma base qui commence à avoir des temps de reaction
bizarre.

je connait ce forum depuis peu mais il est reelement genial avec des
personnes tres serviable. BRAVO

d'avance merci beaucoup





Poster une réponse
Anonyme