Inertion de plusieurs lignes dans une même requête

hindhinf Messages postés 50 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 27 juillet 2007 - 13 déc. 2006 à 12:50
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 14 déc. 2006 à 15:30
Bonjour ,

     est ce que quelcun connnait comment je peux insérer  une chaine de caractère comme : a,b,c de tel sorte que a soit dans une ligne , b et c aussi ?

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 déc. 2006 à 21:08
Salut
On n'a pas de caméra au dessus de ton épaule et on ne sait pas trop avec quel type de connexion tu travailles. Tu ne t'es pas étendu sur le sujet.
Mais en général, il te suffit de lancer tes quatre requètes à la suite, pas de problème.
Si tu as peur qu'une des insertion ne se fasse pas et que, par conséquent, tu ne veux pas que les autres soient quand même insérées (toutes ou aucune), il te suffit d'utiliser la méthode des 'Transaction'
Avec un objet ADODB :
maConn.BeginTrans
... tes requètes SQL
Si elles sont toutes passées --> maConn.CommitTrans
S'il y a eu erreur --> maConn.RollBackTrans

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
0
hindhinf Messages postés 50 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 27 juillet 2007 2
13 déc. 2006 à 21:57
il me semble que le titre c'est claire '... dans une même requête '  mais bon je parle d'une requete SQL qui permet de d'insérer des valeures a,b,c  dans des lignes différentes bien dans un même champs
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
14 déc. 2006 à 00:17
Bonsoir,
Non ! le titre n' est pas clair, en plus tu ne réponds pas
à la question de Jack...
Je reprend son exemple en détail:


Étant donné que tu as trois valeur différentes pour un même
champ, tu es obligée d' éxecuter ta requête trois fois
(c' est ce qu' il voulait dire par "tes requêtes sql")


"INSERT INTO TaTable ( TonChamp ) SELECT 'a' AS Expr1;"
"INSERT INTO TaTable ( TonChamp ) SELECT 'b' AS Expr1;"
"INSERT INTO TaTable ( TonChamp ) SELECT 'c' AS Expr1;"


si tes valeurs sont des variables sors les des expressions
(...'" & a & "'...)
0
hindhinf Messages postés 50 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 27 juillet 2007 2
14 déc. 2006 à 11:37
En fait je voulais  éviter d'exécuter  la requête trois fois , c'est  pour ça que j'ai poser la question  ,  je me suis  dit qu'il y a une autre méthode que je connaissais pas qui perméttait de m'eviter cela mais apparemment il y  en a pas
    merci de votre aide quand même
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
14 déc. 2006 à 15:30
Bonjour,
Effectivement, tel que ton traitement se présente, il n' y en a pas !
C 'est pourquoi, pour éviter d' ecrire une Sql autant de fois qu' on a
de lignes à insérer (je pense un nombre plus élevé),
il est plus judiscieux d' avoir recours à une collection.
(et dans certain cas même à une table temporaire)


...BeginTrans
   For i=1 to NbDeFois
     "INSERT INTO TaTable ( TonChamp ) SELECT '" & T(i) & "' AS Expr1;"
   Next
...CommitTrans


C' est vrai que la requête va s' exécuter autant de fois, mais au moins
tu feras une économie sur les lignes de code...

Amicalement
0
Rejoignez-nous