Bonjour,
j'édite des états en vérifiant d'abord si leur requete liée contient des données. Apres l"édition je fais un update sur les enregistrements concernés.
Pour faire ca dans mon code, j'appelle la requete , je vérifies la présence d'enregistrement, j'édite l'état et je passe la requete update comme suit :
Ce que je me dis, c'est que cette solution n'est pas optimale puisque je crée une sorte de vue sur des enregistrements (1requete) puis j'appelle un état (1 requete) puis je fais un update (1 requete) et a chaque fois en passant dans les requetes tous les parametres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Set rec = db.OpenRecordset("SELECT contrat.cdcontrat " & _ " FROM contrat INNER JOIN annexe ON contrat.cdcontrat = annexe.cdcontrat " & _ " WHERE (((contrat.dateenvoicontrat) Is Null) AND ((annexe.dateenvoiannexe) Is Null) " & _ " AND ((contrat.typecontrat)='C-OP') AND ((annexe.versionannexe)=6)) " & _ " GROUP BY contrat.cdcontrat;", dbOpenSnapshot) If Not rec.EOF And Not rec.BOF Then DoCmd.OpenReport "contrat+annexe OP v6", , , "dateenvoicontrat is null and dateenvoiannexe is null" DoCmd.RunSQL ("UPDATE contrat INNER JOIN annexe ON contrat.cdcontrat = annexe.cdcontrat " & _ " SET dateenvoicontrat = date() , dateenvoiannexe = date()" & _ " WHERE (((contrat.dateenvoicontrat) Is Null) AND ((annexe.dateenvoiannexe) Is Null) " & _ " AND ((contrat.typecontrat)='C-OP') AND ((annexe.versionannexe)=6));") End If Set rec = Nothing
N'y aurait il pas une meilleure solution en détachant l'update dans une fonction qui mettrait a jour les champs des enregistrements déja dans le recorset ? comme j'appelle une vingtaine d'états, ca fait 20 requetes update en moins a écrire en entier. Qu'en pensez vous ?
nb : mon code marche mais je suis dans un souci d'optimisation...
guillaume
Partager