Aide pour requete sql avec vb6 pour access

cs_akzo Messages postés 133 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 3 janvier 2015 - 11 juil. 2010 à 21:23
cs_akzo Messages postés 133 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 3 janvier 2015 - 13 juil. 2010 à 10:57
Bonsoir a tous
j'ai besoin d'une aide pour un code plus simple que ce que j'utilise deja et qui fonctionne

je presente ma table de cette facon
numauto nom prenom .........
1 xxx yyyyy
2 0 0
3 zzz tttt


je veux obtenir dans la meme table
numauto nom prenom .........
1 xxx yyyyy
2 zzz ttt
3 0 0

pour le moment je fait une requete qui prends tous mes champ de la ligne 3 avec un select *
Je fait ensuite donnée1=nom
donnée2=prenom
donnéeX= ....
ensuite j'utilise deux requetes update
la premiere recupere mes données pour les inscrire dans la ligne 2 (update table set nom=donnée1,prenom=donnée2 ......)
la seconde requete mes les champs a zero update table set nom=0,prenom=0 ......)

cela fonctionne tres bien
mais existe t'il quelque chose de plus rapide qui me ferais moins de code a ecrire car pour l'instant si j'ai 100 champs il me faudra tout ecrire de donnée1 a donnée100 et idem pour mes deux requetes qui suivent

merci a tous pour votre aide
salutation

3 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
12 juil. 2010 à 00:52
Salut
Non, il faudra continuer à faire ces décalages toi-même.
Seule chose, c'est que les champs peuvent être désignés par leur index (0 pour le numéro auto, 1 pour le nom et 3 pour le prénom) : du coup, tu peux facilement faire une boucle.

En fait, ce qui te perturbe, c'est ce numéro auto.
Beaucoup de gens prennent ce chiffre pour un chiffre "viable" alors qu'il n'est qu'un chiffre assurant que ce numéro sera unique dans la table.
Inconvénient : on ne maitrise pas sa valeur et comme tu lui donné une signification, te voilà embêté.
Solution possible : Laisse ce numéro auto n'être qu'un index, une clé primaire, et définit un nouveau champ dans lequel tu pourras mettre la valeur numérique que TU souhaites. Cela t'évitera ce genre de manip de décalage.

Pour savoir quel est le prochain numéro à utiliser, une simple requète recherchant le Max(monNuméro) auquel tu ajouteras 1 fera l'affaire.

Dernière chose : si tu n'as plus besoin d'un enregistrement, ne fait pas un Update avec des champs vidés, mais supprime (Delete) cette ligne de données, ça t'évitera d'avoir à les trainer derrière.

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

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
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
12 juil. 2010 à 00:53
"les champs peuvent être désignés par leur index (0 pour le numéro auto, 1 pour le nom et 3 pour le prénom)"
Non : 2 pour le prénom, bien sûr
0
cs_akzo Messages postés 133 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 3 janvier 2015 3
13 juil. 2010 à 10:57
bonjour,
Merci pour vos reponses
Actuelement j'ai ecrit mon code de maniere a recuperer l'ensemble de mes valeurs puis de faire qu'un seul update pour les faires changer de lignes.
J'ai choisi cela car les boucles c'est bien plus simple pour programmer mais s'il y a 100 champs ca fait pas mal de requete et donc un ralentissement.

Merci quand meme
salutation et bonne continuation
0
Rejoignez-nous