OVH Cloud OVH Cloud

fonction split

4 réponses
Avatar
Maurice
Bonjour,

Dans la table "test" j'ai les champs suivants:
Nom; prenom; adresse; code
X Z YYY 12;25;30
.
.
Je souhaite transformer ces champs vers une table "temp"=20
sous le format suivants:
Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 25
X Z YYY 30

Mon probl=E8me et que j'utilise la fonction split mais le=20
r=E9sulat n'est pas bon il mon prends toujours la premi=E8re=20
valeur dans le champ code:

Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 12
X Z YYY 12

Le code est ci-joint:

Set Db =3D CurrentDb
Set Rs =3D Db.OpenRecordset("test")
Set Rs1 =3D Db.OpenRecordset("Temp")
Do Until Rs.EOF
If Not IsNull(Rs!code) Then
Tableau =3D Split(Rs!code, ";")
For i =3D LBound(Tableau) To UBound(Tableau)
If Tableau(i) <> "" Then
Rs1.AddNew
Rs1!Nom =3D Rs!nom
Rs1!prenom =3D Rs!prenom
Rs1!adresse =3D Rs!adresse
Rs1!code =3D Tableau(Ix)
Rs1.Update
End If
Next i
End If
Rs.MoveNext
Loop
MsgBox "ok"
End Sub

Merci de votre aide!

4 réponses

Avatar
Rv
Bonjour,

Dans la boucle

For i = LBound(Tableau) To UBound(Tableau)
If Tableau(i) <> "" Then
Rs1.AddNew
Rs1!Nom = Rs!nom
Rs1!prenom = Rs!prenom
Rs1!adresse = Rs!adresse
Rs1!code = Tableau(Ix)
Rs1.Update
End If
Next i


La ligne
Rs1!code = Tableau(Ix) doit être remplacée par Tableau(i)
Je ne sais pas ce que fait cette variable Ix.
D'ou un petit conseil : il vaut mieux utiliser la commande option explicit
en en-tête de chaque module. Car dans ce cas si la variable Ix n'est pas
déclarée alors VB signale une erreur!

A+

Rv


"Maurice" a écrit dans le message de
news:1b2a101c44f94$af9ef1c0$
Bonjour,

Dans la table "test" j'ai les champs suivants:
Nom; prenom; adresse; code
X Z YYY 12;25;30
.
.
Je souhaite transformer ces champs vers une table "temp"
sous le format suivants:
Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 25
X Z YYY 30

Mon problème et que j'utilise la fonction split mais le
résulat n'est pas bon il mon prends toujours la première
valeur dans le champ code:

Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 12
X Z YYY 12

Le code est ci-joint:

Set Db = CurrentDb
Set Rs = Db.OpenRecordset("test")
Set Rs1 = Db.OpenRecordset("Temp")
Do Until Rs.EOF
If Not IsNull(Rs!code) Then
Tableau = Split(Rs!code, ";")
For i = LBound(Tableau) To UBound(Tableau)
If Tableau(i) <> "" Then
Rs1.AddNew
Rs1!Nom = Rs!nom
Rs1!prenom = Rs!prenom
Rs1!adresse = Rs!adresse
Rs1!code = Tableau(Ix)
Rs1.Update
End If
Next i
End If
Rs.MoveNext
Loop
MsgBox "ok"
End Sub

Merci de votre aide!
Avatar
Bonjour,

la variable IX est déclaré "Dim Ix As Integer", je n'ai
pas d'erreur mais le résultat attendu n'est pas bon.

A+
-----Message d'origine-----
Bonjour,

Dans la boucle

For i = LBound(Tableau) To UBound(Tableau)
If Tableau(i) <> "" Then
Rs1.AddNew
Rs1!Nom = Rs!nom
Rs1!prenom = Rs!prenom
Rs1!adresse = Rs!adresse
Rs1!code = Tableau(Ix)
Rs1.Update
End If
Next i


La ligne
Rs1!code = Tableau(Ix) doit être remplacée par Tableau
(i)

Je ne sais pas ce que fait cette variable Ix.
D'ou un petit conseil : il vaut mieux utiliser la
commande option explicit

en en-tête de chaque module. Car dans ce cas si la
variable Ix n'est pas

déclarée alors VB signale une erreur!

A+

Rv


"Maurice" a écrit
dans le message de

news:1b2a101c44f94$af9ef1c0$
Bonjour,

Dans la table "test" j'ai les champs suivants:
Nom; prenom; adresse; code
X Z YYY 12;25;30
..
..
Je souhaite transformer ces champs vers une table "temp"
sous le format suivants:
Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 25
X Z YYY 30

Mon problème et que j'utilise la fonction split mais le
résulat n'est pas bon il mon prends toujours la première
valeur dans le champ code:

Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 12
X Z YYY 12

Le code est ci-joint:

Set Db = CurrentDb
Set Rs = Db.OpenRecordset("test")
Set Rs1 = Db.OpenRecordset("Temp")
Do Until Rs.EOF
If Not IsNull(Rs!code) Then
Tableau = Split(Rs!code, ";")
For i = LBound(Tableau) To UBound(Tableau)
If Tableau(i) <> "" Then
Rs1.AddNew
Rs1!Nom = Rs!nom
Rs1!prenom = Rs!prenom
Rs1!adresse = Rs!adresse
Rs1!code = Tableau(Ix)
Rs1.Update
End If
Next i
End If
Rs.MoveNext
Loop
MsgBox "ok"
End Sub

Merci de votre aide!


.



Avatar
Rv
Re,

Je n'est pas était trés clair. Désolé.

Il faut remplacer la ligne:
Rs1!code = Tableau(Ix)
par
Rs1!code = Tableau(i)

A+

Rv


a écrit dans le message de
news:1b2cc01c44f98$2dcb2d90$
Bonjour,

la variable IX est déclaré "Dim Ix As Integer", je n'ai
pas d'erreur mais le résultat attendu n'est pas bon.

A+
-----Message d'origine-----
Bonjour,

Dans la boucle

For i = LBound(Tableau) To UBound(Tableau)
If Tableau(i) <> "" Then
Rs1.AddNew
Rs1!Nom = Rs!nom
Rs1!prenom = Rs!prenom
Rs1!adresse = Rs!adresse
Rs1!code = Tableau(Ix)
Rs1.Update
End If
Next i


La ligne
Rs1!code = Tableau(Ix) doit être remplacée par Tableau
(i)

Je ne sais pas ce que fait cette variable Ix.
D'ou un petit conseil : il vaut mieux utiliser la
commande option explicit

en en-tête de chaque module. Car dans ce cas si la
variable Ix n'est pas

déclarée alors VB signale une erreur!

A+

Rv



Avatar
Merci de ton aide.

A+
-----Message d'origine-----
Re,

Je n'est pas était trés clair. Désolé.

Il faut remplacer la ligne:
Rs1!code = Tableau(Ix)
par
Rs1!code = Tableau(i)

A+

Rv


a écrit dans le
message de

news:1b2cc01c44f98$2dcb2d90$
Bonjour,

la variable IX est déclaré "Dim Ix As Integer", je n'ai
pas d'erreur mais le résultat attendu n'est pas bon.

A+
-----Message d'origine-----
Bonjour,

Dans la boucle

For i = LBound(Tableau) To UBound(Tableau)
If Tableau(i) <> "" Then
Rs1.AddNew
Rs1!Nom = Rs!nom
Rs1!prenom = Rs!prenom
Rs1!adresse = Rs!adresse
Rs1!code = Tableau(Ix)
Rs1.Update
End If
Next i


La ligne
Rs1!code = Tableau(Ix) doit être remplacée par
Tableau


(i)
Je ne sais pas ce que fait cette variable Ix.
D'ou un petit conseil : il vaut mieux utiliser la
commande option explicit

en en-tête de chaque module. Car dans ce cas si la
variable Ix n'est pas

déclarée alors VB signale une erreur!

A+

Rv




.