Mr Capone
Messages postés21Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention19 juin 2005
-
27 janv. 2005 à 10:11
Mr Capone
Messages postés21Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention19 juin 2005
-
27 janv. 2005 à 11:33
Bonjour je souhaite inseré dans ma base (sql server) des données,
cependant le nombre de champ dans ma requete peut varier par le futur
(pour le moment un enregistrement fait 20 champs)...
Alors j'ai fait ma connection a ma base, ca marche
Ensuite j'ai l'enregistrement que je souhaite ajouter qui est une
chaine dont les champs sont séparés par ";" (exemple
1;2546;Netbios;Antivir;250;12/12/2004)
j'ai déclaré un tableau champ() dans lequel je range les valeurs des champs grace a ce bout de code
j'ai donc mon tableau chaine() avec chaque valeur de ma chaine rangé dedans et dont le nombre de champs est égale à j...
Jusqu'la tout va bien
desormais je souhaite inséré l'enrgistrement contenu dans champ() a l'aide d'une requete et donc d'une boucle, car le nombre de champ peut varier (et pas consequence "j" également)
Donc ceci fonctionne mais que pour une chaine de 10 champs ,
ce que je souhaite c'est pouvoir a l'aide d'une boucle inséré mes "j"
champs... mais comment lui faire comprendre dans la boucle qu'il doit
se decaler apres avoir inseré le champ(1), puis se décaler a droite
apres avoir inséré le champ(2) afin que l'enregistrement soit inséré
dans ma base et chaque valeur dans son bon champ...
J'espere avoir été assez clair...
Si quelqun peut m'aider, en plus je suis sur que ca peut aider plusieurs personnes
Si il vous faut des informations suplémentaire n'hésitez pas...
cs_corsica
Messages postés147Date d'inscriptionlundi 13 mai 2002StatutMembreDernière intervention15 février 2010 27 janv. 2005 à 10:40
Dim Chaine as String
Dim Champs() as String
Dim Max_Champs as integer
Dim Min_Champs as integer
Dim i as integer
Chaine = "1;2546;Netbios;Antivir;250;12/12/2004"
Champs = Split(Chaine,";")
' Je split le tableau sur le ";"
Min_Champs = LBound(Champs)
Max_Champs = UBound(Champs)
' Je récupére le plus petit et le plus grand indice de mon tableau
cnx.BeginTrans
req = "Insert into test values ("
For i=Min_Champs to Max_Champs
Req = Req + "'" + Champs(i) & "',"
next j
Req = Mid$(Req ,1,Len(Req)-1) + ")"
' ça c pour enlever la derniére virgule sur le dernier champs
' et rajouter la paranthése de fin
cnx.Execute sql
cnx.CommitTrans
Voilà ...
Mais franchement , si tu dois faire évoluer ton nombre de champs dans la chaine , tu devras aussi faire évoluer le nombre de champs de ta table alors quel est l'intéret de faire comme çà ??? Je ne sais pas ... Enfin c pas grave , j'espère avoir répondu à ta question , @ +
Mr Capone
Messages postés21Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention19 juin 2005 27 janv. 2005 à 11:33
Merci pour cette réponse rapide, j'ai essayé ton code, je pense que le next j est en faite un next i non ??
Ensuite un probleme que je n'avait pas évoqué... et qui risque de
fortement posé probleme... le premier champ de ma table est un Numero
Auto... je n'ai donc pas a inseré de valeur dans ce premier champ... le
premier element de ma chaine en l'ocurence "1" ici est en faite la
valeur qui doit etre inseré dans le 2eme champ de ma table... ca me
parait complexe desormais...