OVH Cloud OVH Cloud

Le prédicat DISTINCT excluerait la mise à jour ?

2 réponses
Avatar
Via
Bonjour à tous.

Petit problème. J'essaie d'exécuter ce code :

Dim RsDateMaj As Variant
NewDateMaj = Format(Date, "dd/mm/yyyy")
SQL$ = "SELECT DISTINCT FABRICANT.DatMaj FROM FABRICANT WHERE
FABRICANT.RefFab = 'Tralala' ;"
OuvrirRecordset RsDateMaj, SQL '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
If SYS_BD = ACCESS Then
RsDateMaj.Edit
End If
RsDateMaj!DatMAJ = CDate(NewDateMaj)
RsDateMaj.Update
RsDateMaj.Close

Or ça me refuse, en DAO comme en ADO, la mise à jour (avec une erreur
différente pour chaque cas, mais ça ne fonctionne pas) Par contre si je
retire le DISTINCT de la chaîne SQL, plus aucun problème. A l'inverse, si je
mets DISTINCTROW en DAO / Access, aucun problème.
Le DISTINCT empêche-t-il la mise à jour ? Si oui, pourquoi ?

Via :)

2 réponses

Avatar
Rémy
"Via" a écrit dans le message de
news:Ol%23%
Bonjour à tous.

Petit problème. J'essaie d'exécuter ce code :

Dim RsDateMaj As Variant
NewDateMaj = Format(Date, "dd/mm/yyyy")
SQL$ = "SELECT DISTINCT FABRICANT.DatMaj FROM FABRICANT WHERE
FABRICANT.RefFab = 'Tralala' ;"
OuvrirRecordset RsDateMaj, SQL '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
If SYS_BD = ACCESS Then
RsDateMaj.Edit
End If
RsDateMaj!DatMAJ = CDate(NewDateMaj)
RsDateMaj.Update
RsDateMaj.Close

Or ça me refuse, en DAO comme en ADO, la mise à jour (avec une erreur
différente pour chaque cas, mais ça ne fonctionne pas) Par contre si je
retire le DISTINCT de la chaîne SQL, plus aucun problème. A l'inverse, si


je
mets DISTINCTROW en DAO / Access, aucun problème.
Le DISTINCT empêche-t-il la mise à jour ? Si oui, pourquoi ?

Via :)





Bonjour,

Ca me parait assez logique : DISTINCT sert à ne "voir" qu'une seule valeur
là où il y a en fait plusieurs enregistrements en base.

Or si l'on veut mettre à jour les données, on doit savoir quel
enregistrement mettre à jour !!

Rémy
Avatar
Vuillermet Jacques
Un UPDATE n'est possible que si les enregistrements à modifier sont
identifiables (avec une clé primaire).

Or, dans un recordset résultant d'un SELECT DISTINCT, on ne peut pas
identifier de manière unique les enregistrements impactés (l'enregistrement
est virtuel), donc l'UPDATE est impossible.

Même limitation si tu ouvres manuellement une requête Access avec un
DISTINCT sous-jacent et que tu tentes une modification d'enregistrement au
clavier.

Jacques.


"Via" a écrit dans le message de news:
Ol##
Bonjour à tous.

Petit problème. J'essaie d'exécuter ce code :

Dim RsDateMaj As Variant
NewDateMaj = Format(Date, "dd/mm/yyyy")
SQL$ = "SELECT DISTINCT FABRICANT.DatMaj FROM FABRICANT WHERE
FABRICANT.RefFab = 'Tralala' ;"
OuvrirRecordset RsDateMaj, SQL '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
If SYS_BD = ACCESS Then
RsDateMaj.Edit
End If
RsDateMaj!DatMAJ = CDate(NewDateMaj)
RsDateMaj.Update
RsDateMaj.Close

Or ça me refuse, en DAO comme en ADO, la mise à jour (avec une erreur
différente pour chaque cas, mais ça ne fonctionne pas) Par contre si je
retire le DISTINCT de la chaîne SQL, plus aucun problème. A l'inverse, si


je
mets DISTINCTROW en DAO / Access, aucun problème.
Le DISTINCT empêche-t-il la mise à jour ? Si oui, pourquoi ?

Via :)