OVH Cloud OVH Cloud

comment executer une requête d'ajout x fois ou x=nombre de caractère dans un enregistrements

14 réponses
Avatar
dams27_56
Bonjour =E0 tous,

Je souhaiterais dupliquer un champ avec une requ=EAte d'ajout en
fonction de certains param=E8tres. Voivi le champ qui contient les
param=E8tres:1,5 | 2,0 | 2,5. En fait je voudrais copier toutes la ligne

autant de fois que le symbole "|" est pr=E9sent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.=20


Merci beaucoup pour votre aide

4 réponses

1 2
Avatar
Eric
Bonjour,

En reprenant la fonction NbOc de ze_titi (2ème version) qui a oublié de
déclarer i comme un Long ;-) ,
copies le code ci-dessous dans le module où tu as écrit sa fonction:

Sub zz()
Dim bd As Database
Dim snap As DAO.Recordset
Dim strSQL As String, i As Long, nb As Long
Set bd = CurrentDb
Set snap = bd.OpenRecordset("select * from DR", dbOpenSnapshot)
While Not snap.EOF
nb = NbOc(snap("Sect1"), "|")
If nb > 0 Then
For i = 1 To nb
strSQL = "Insert into DR(dpn, cpn, famille, sect1) "
strSQL = strSQL & "Values('" & snap(0) & "','" & snap(1)
strSQL = strSQL & "','" & snap(2) & "','" & snap(3) & "')"
CurrentDb.Execute strSQL
Next i
End If
snap.MoveNext
Wend
snap.Close
bd.Close
Set snap = Nothing
Set bd = Nothing
End Sub

Puis sur l'évènement clic de ton bouton de commande du formulaire:
Private Sub Commande0_Click()
Call zz
End Sub

(A tester sur une copie de la table DR)
PS : snap(0), snap(1), ... représentent les champs de ta table DR,
équivalent à snap("dpn"), snap("cpn"), ... mais plus court à écrire


Donc en fait, j'ai une table DR qui contient une colonne appelé SECT1
qui contient dans quasiment tous les enregistrements le caractère | .
voici un exemple d'enregistrement:

DPN CPN Famille SECT1
toto titi CG5D 0,5+1,0 | 0,5+1,5

je souhaiterais dupliquer cette ligne autant de fois qu'il y a le
caractère | dedans.

peux-tu m'aider
merci d'avance



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...

Et moi j'ai oublié, entre autres, de préciser que tu devais charger la
référence Microsoft DAO Object Library 3.x dans tes références de
l'interface VBE (Menu Outils|Références)


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
dams27_56
Bonjour,

j'ai encore un problème, le script ne fonctionne pas correctement, il
me fais une boucle infini...C'est la galère...
avez-vous une solution

merci beaucoup par avance



.../...

Et moi j'ai oublié, entre autres, de préciser que tu devais charger la
référence Microsoft DAO Object Library 3.x dans tes références de
l'interface VBE (Menu Outils|Références)


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl= fr


Avatar
Eric
Bonsoir,

Rajoutes cette ligne :
snap.MoveLast: snap.MoveFirst

avant la ligne :
While Not snap.EOF


Bonjour,

j'ai encore un problème, le script ne fonctionne pas correctement, il
me fais une boucle infini...C'est la galère...
avez-vous une solution

merci beaucoup par avance




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

1 2