Bonjour,
Je rencontre deux petits problèmes lors d'insert et de select.
Les problèmes ne se trouve pas vraiment dans la syntax de requête mais plutôt dans leur généricité.
1
Voici ma requête :
Le problème est que lorsque le paramètre (d'un champ) est "%", ce qui veut donc dire que je veux tous les tuples. Si la valeur est "null" le tuple ne sera pas sélectionné. Également si le badge n'est rattaché à aucune personne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT * FROM (Badges b LEFT JOIN Personnes p ON b.BaPersonne = p.PeId ) INNER JOIN Statut s ON s.StId = b.BaStId WHERE b.BaId LIKE @idBadge AND b.BaStId LIKE @BaStatut AND p.PeNom LIKE @PeNom AND p.pePrenom LIKE @PePrenom
Rajouterrésoud le problème mais en pose un autre. Lors de select, il affichera toujours tout les tuples dont la valeur de PeNom est "null".
Code : Sélectionner tout - Visualiser dans une fenêtre à part p.PeNom LIKE @PeNom OR p.PeNom IS NULL
Question : Je cherche à résoudre ce problème sans écrire une multitude de requêtes différentes en fonction des paramètre, est ce possible ?
2
Je crée une requête de ce type
Dans ma DB (Access), BaPersonne peut être "null" et est un entier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 INSERT INTO Badges ( BaStId, BaUserLoc,BaPersonne ) VALUES ( @idStatut, @userLoc,@idResp ) ; DbParameter paramPersonne = cmd.CreateParameter(); paramPersonne.ParameterName = "@idResp"; paramPersonne.DbType = System.Data.DbType.Int32; paramPersonne.Value = this.idPersonne; (Le problème se poserait aussi dans un Update)
Il se pourrait qu'on crée un badge avec aucun propriétaire et donc BaPersonne à "null".
Question : Serait t'il possible de donné une "valeur" à insérer qui ferait comme si on avait rien inséré ? Laissant la colonne BaPersonne à "blanc".
Un grand merci d'avance pour votre lecture :p
Partager