OVH Cloud OVH Cloud

Aller plus vite avec SQL

3 réponses
Avatar
Jeff
Bonjour à tous

Pour modifier le séparateur décimal d'un champ, voici le fonction

Set mj = db.OpenRecordset("temp")
If Not mj.BOF Then
mj.MoveFirst
Do Until mj.EOF
mj.Edit
mj![4] = Format(Val(ReplaceString(mj![4], ",", ".")), "0.00")
mj.Update
mj.MoveNext
Loop
End If
mj.Close

Serait-il possible d'éffectuer la même opération avec

db.execute ("UPDATE [TEMP] SET [4]=...")

Est-ce que cela serait plus rapide ?

Cordialement

Jeff

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

3 réponses

Avatar
Raymond [mvp]
Bonjour Jeff.

le changement de valeur ne prend pas plus de temps en requête qu"en vba car
c'est la même fonction. Mais une requête est nettement plus performante
qu'un recordset vba. sur une grande quantité d'enregistrement il vaut mieux
choisir la requête
Toutefois, ce genre de fonction appliquée à un champ de table va te poser
des problèmes de compatibilité de type. En effet le champ [4] étant je pense
numérique lorsque tu vas mettre un point dedans tu vas te faire jeter quelle
que soit la méthode utilisée. la fonction format ne fonctionnera pas
correctement et access n'acceptera pas le point dans un champ numérique. Tu
vas contredire les paramètres régionaux et ton appli est inutilisable en
multi-langage. en général on utilise cetet fonction qu'en requête sélection
et non en requête mise à jour.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Jeff" a écrit dans le message de
news:
Bonjour à tous

Pour modifier le séparateur décimal d'un champ, voici le fonction

Set mj = db.OpenRecordset("temp")
If Not mj.BOF Then
mj.MoveFirst
Do Until mj.EOF
mj.Edit
mj![4] = Format(Val(ReplaceString(mj![4], ",", ".")), "0.00")
mj.Update
mj.MoveNext
Loop
End If
mj.Close

Serait-il possible d'éffectuer la même opération avec

db.execute ("UPDATE [TEMP] SET [4]=...")

Est-ce que cela serait plus rapide ?

Cordialement

Jeff

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com



Avatar
Jeff
Bonjour Raymond,

Donc il vaut mieux passer par une requète mise à jour
sans la fonction format mais en conservant ReplaceString
d'aprés ce que je comprends ?

Pour ce qui est du problème de compatibilité, mes paramètres
régionaux prennent en compte le point pour les nombres.

Merci pour ta réponse

Cordialement

Jeff

"Raymond [mvp]" vient de nous annoncer :
Bonjour Jeff.

le changement de valeur ne prend pas plus de temps en requête qu"en vba car
c'est la même fonction. Mais une requête est nettement plus performante
qu'un recordset vba. sur une grande quantité d'enregistrement il vaut mieux
choisir la requête
Toutefois, ce genre de fonction appliquée à un champ de table va te poser
des problèmes de compatibilité de type. En effet le champ [4] étant je pense
numérique lorsque tu vas mettre un point dedans tu vas te faire jeter quelle
que soit la méthode utilisée. la fonction format ne fonctionnera pas
correctement et access n'acceptera pas le point dans un champ numérique. Tu
vas contredire les paramètres régionaux et ton appli est inutilisable en
multi-langage. en général on utilise cetet fonction qu'en requête sélection
et non en requête mise à jour.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Jeff" a écrit dans le message de
news:
Bonjour à tous

Pour modifier le séparateur décimal d'un champ, voici le fonction

Set mj = db.OpenRecordset("temp")
If Not mj.BOF Then
mj.MoveFirst
Do Until mj.EOF
mj.Edit
mj![4] = Format(Val(ReplaceString(mj![4], ",", ".")), "0.00")
mj.Update
mj.MoveNext
Loop
End If
mj.Close

Serait-il possible d'éffectuer la même opération avec

db.execute ("UPDATE [TEMP] SET [4]=...")

Est-ce que cela serait plus rapide ?

Cordialement

Jeff

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com


Avatar
Raymond [mvp]
si tes paramètres régionaux prennent les points, il faut passer comme tu
l'as prévu par une conversion en texte avec Str + replace + conversion en
num avec Val du genre: Val(Replace(Str(Nombre), ",", ".")) et sans le format
car de toute façon le champ va récupérer le bon format
fais bien des copies avant de commencer.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Jeff" a écrit dans le message de
news:
Bonjour Raymond,

Donc il vaut mieux passer par une requète mise à jour
sans la fonction format mais en conservant ReplaceString
d'aprés ce que je comprends ?

Pour ce qui est du problème de compatibilité, mes paramètres
régionaux prennent en compte le point pour les nombres.

Merci pour ta réponse

Cordialement

Jeff