Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2011, 11h49   #1
Futur Membre du Club
 
Inscription : novembre 2010
Messages : 101
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 101
Points : 16
Points : 16
Par défaut Incrément d'après liste incomplète

Bonjour à Tous,

Un petit retour sur un problème non résolu. J'ai fouiné mais rouillé que je suis, je ne trouve pas le truc qui muche.

* Etabli : une Table A avec champ CPO (clef prim), Objet, NumInv
-> les valeurs dans NumInv sont numériques, mais ne suivent pas l'ordre de saisie CPO.

* Souhaité 1 : à l'ajout d'une nouvelle entrée CPO, il faut que NumInv 'n' = le plus grand NumInv de la table entière +1.

* Souhaité 2 : toutes les entrées déjà existantes ne comportent pas une valeur en NumInv ; il faut que NumInv 'x' = le plus grand NumInv de la table entière +1.


=> Ce que je comprends : il faut que ma requête porte sur la liste entière des NumInv déjà existants.

J'avais essayé cela, mais à la réflexion et à l'expérience ,c'est absurde puisque cela ne répond pas à l'objectif "Souhaité 2" :
Code :
1
2
3
SELECT A.CPO, A.NumInv, 0+Nz(COUNT(B.CPO),0) AS Test
FROM A INNER JOIN A AS B ON A.CPO>=B.CPO
GROUP BU A.CPO, A.NumINV
Comment faire svp ? Par un Select Count ? Par un modèle d'équation ?
Merci beaucoup !

Problématiquement vôtre,
BK
brankorri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 17h50   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 561
Points : 7 561
Personnellement j'utiliserai DMax()+1 avec un petit bout de VBA bien qu'on doive pouvoir le faire avec une requête d'insertion.

Voici le code que je ferai :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
dim db as dao.database:set db=currentdb
dim r as dao.recordset:set r=db.openRecordset("nomTaTable")
 
do while not r.eof
 
   if isnull(r![NumInv]) then
      r.edit
      r![NumInv]=dmax("NumInv","NomTaTable")+1
      r.update
   end if
 
   r.movenext
loop
 
r.close:set r=nothing
set db=nothing
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h23.


 
 
 
 
Partenaires

Hébergement Web