Ajouter une condition dans un db.Openrecordset
Bonjour
Je débute encore :aie:
J'ai une fonction publique générant un planning.
En l'état, elle prend toutes les personnes de la table [T_Personnel] et génère un planning.
Je souhaite restreindre les personnes à seulement celles dont le champs [Magasin] situé dans la table [T_Personnel] est égal au champ [Magasin] de la table [T_MagasinCourant], pour que le planning ne soit généré que sur le magasin "actif"
Voici le début de la fonction:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Public Function GenererPlanningPersonnels(DateDebut As Date, NbSemaines As Long)
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim dt1 As Date
Dim J1 As Long, i As Long
Dim IdPersonnel As Long
Set db = CurrentDb
'Set rs = db.OpenRecordset("T_Personnel", dbOpenDynaset)
Set rs = db.OpenRecordset("select * from T_Personnel where (Magasin= " & [T_MagasinCourant]![Magasin] & "), dbOpenDynaset)
Set rs1 = db.OpenRecordset("T_Planning", dbOpenDynaset)
Do Until rs.EOF |
En ligne 11 j'ai passé le code original en commentaire, et j'ai mis en ligne 12 ce que je voudrais, mais vu mon faible niveau ça ne fonctionne pas , j'ai une erreur de syntaxe :calim2:
Merci d'avance pour votre aide et votre intérêt. :mrgreen:
Ajouter une condition dans un db.Openrecordset
Bonjour,
Je suppose que ta requête devrait être plutôt:
Code:
Set rs = db.OpenRecordset("select * from T_Personnel INNER JOIN T_MagasinCourant ON T_Personnel.Magasin=[T_MagasinCourant]![Magasin] ;"), dbOpenDynaset)
Je pense également que la jointure serait plus performante avec un code magasin de type entier long en clé unique dans la table T_MagasinCourant et indexé avec doublons dans la table T_Personnel .
Ajouter une condition dans un db.Openrecordset
Citation:
J'ai fait un copier coller de ton code, j'obtiens encore une erreur de syntaxe
Peut-être manque-t-il:
Code:
Set rs = db.OpenRecordset("select T_Personnel.* from T_Personnel INNER JOIN T_MagasinCourant ON T_Personnel.Magasin=[T_MagasinCourant]![Magasin] ;"), dbOpenDynaset)
Citation:
quand tu dis: "et indexé avec doublons dans la table T_Personnel" là je ne comprends pas...
Dans l'idée les recherches sont plus rapides sur des champs numériques longs et indexés, donc il serait bon à minima dans ton cas que ton champ [T_MagasinCourant]![Magasin] soit une clé unique (même si alpha), et que dans la table T_Personnel, qu'il soit indexé avec doublons.
Ajouter une condition dans un db.Openrecordset
Ouuups!
Je pense avoir repéré le problème dans le SQL: il s'agirait d'une parenthèse en trop. Essaie:
Code:
Set rs = db.OpenRecordset("select T_Personnel.* from T_Personnel INNER JOIN T_MagasinCourant ON T_Personnel.Magasin=[T_MagasinCourant]![Magasin] ;", dbOpenDynaset)
Je précise que j'avais moi-même copié-collé ton SQL :ptdr:
Ajouter une condition dans un db.Openrecordset
Outre la parenthèse, pourrais-je voir la structure de tes 2 tables?
Ajouter une condition dans un db.Openrecordset
As-tu enlevé la parenthèse?
Sinon çà serait bien d'indexer avec doublons le champ Magasin dans la table T_Personnel.
Ajouter une condition dans un db.Openrecordset
Pourrais-tu exporter tes 2 tables vers une base vide (avec leurs éventuelles relations) que je teste cette requête?
Ajouter une condition dans un db.Openrecordset
re-OUPS !
Je pense avoir trouvé un autre loup: remplace le "!" par un "." dans ton SQL, çà devrait aller:
Code:
Set rs = db.OpenRecordset("select T_Personnel.* from T_Personnel INNER JOIN T_MagasinCourant ON T_Personnel.Magasin=[T_MagasinCourant].[Magasin] ;", dbOpenDynaset)
Encore la faute au copier-coller !! :?
Ajouter une condition dans un db.Openrecordset