Requete update fait des caprices
Résolu/Fermé
laetitia02
Messages postés
424
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
12 mars 2009
-
31 janv. 2008 à 10:37
laetitia02 Messages postés 424 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 12 mars 2009 - 1 févr. 2008 à 13:51
laetitia02 Messages postés 424 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 12 mars 2009 - 1 févr. 2008 à 13:51
A voir également:
- Requete update fait des caprices
- Windows update 0x80070643 - Accueil - Windows
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Nettoyage windows update - Guide
10 réponses
phil_232
Messages postés
286
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
33
1 févr. 2008 à 06:34
1 févr. 2008 à 06:34
en général Access demande une clé primaire pour faire des updates
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
1 févr. 2008 à 07:01
1 févr. 2008 à 07:01
Bonjour,
Le recordset (rs) contient plusieurs lignes d'enregistrement et tu fais un Update avec .... Si tu veux faire un Update sur toutes les lignes, il faut faire une boucle While rs.EOF ...
;o)
polux
Le recordset (rs) contient plusieurs lignes d'enregistrement et tu fais un Update avec .... Si tu veux faire un Update sur toutes les lignes, il faut faire une boucle While rs.EOF ...
;o)
polux
phil_232
Messages postés
286
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
33
1 févr. 2008 à 12:17
1 févr. 2008 à 12:17
"il faut faire une boucle While rs.EOF"
aie, non ! un update se fait juste comme il l'a écrit. surtout ne pas boucler SQL fait ça dans un 100ième de temps, si pas un 1000ième. seulement, il semble que le moteur n'arrive pas à trouver les bonnes lignes. normalement c'est parce qu'on a pas défini une clé primaire (clé unique). celle-là est absolument nécessaire sinon le moteur perd les pédales.
aie, non ! un update se fait juste comme il l'a écrit. surtout ne pas boucler SQL fait ça dans un 100ième de temps, si pas un 1000ième. seulement, il semble que le moteur n'arrive pas à trouver les bonnes lignes. normalement c'est parce qu'on a pas défini une clé primaire (clé unique). celle-là est absolument nécessaire sinon le moteur perd les pédales.
laetitia02
Messages postés
424
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
12 mars 2009
129
1 févr. 2008 à 12:27
1 févr. 2008 à 12:27
merci probleme resolu
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
1 févr. 2008 à 12:39
1 févr. 2008 à 12:39
Heuuu Phil, je fais déjà comme ça et ça ne m'a jamais posé de problème ... Ici je pense que le blème vient du recorset qui contient tous les enregistrements donc difficile de vouloir faire un Update avec le résultat du recordset sans le lire ligne par ligne ... ça serait bien que Laetitia mette ici comment elle a résolu son blème
;o)
Polux
;o)
Polux
phil_232
Messages postés
286
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
33
1 févr. 2008 à 12:53
1 févr. 2008 à 12:53
t'as raison que ça ne pose pas de pb (sauf c'est pas efficace, ça bouffe des ressources, ça charge le réseau (transfert de tous les records sur le client et le retour), mais tant que tu as un machine puissante avec beaucoup de RAM, ça marche. bon maintenant utilise ta méthode sur 1.000.000 de lignes, et ce serait toujours une petite bdd) . mais si qqun du coté base de données voit ton code tu est prêt pour www.theDailyWTF.com . il fait d'ailleurs pas de update sur le recordset. son programme a l'air un peu tordu mais le rs est là pour autre chose. pourtant j'aimerais savoir quel était le pb et comment il l'a résolu.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
laetitia02
Messages postés
424
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
12 mars 2009
129
1 févr. 2008 à 12:59
1 févr. 2008 à 12:59
tout simplement
req = "select fiche, date_cdao, num_dossier, prod_id_donnees from basi_cession where prod_id_donnees=" & val & "and fiche is null order by date_cdao desc"
Set rs = mabase.OpenRecordset(req)
If(rs.EOF) Then
Me.Fichep = ""
Else
req = "update basi_cession set fiche='PériméP' where num_dossier='" & rs!Num_Dossier & "' and prod_id_donnees=" & rs!prod_id_données
DoCmd.RunSQL (req)
end if
req = "select fiche, date_cdao, num_dossier, prod_id_donnees from basi_cession where prod_id_donnees=" & val & "and fiche is null order by date_cdao desc"
Set rs = mabase.OpenRecordset(req)
If(rs.EOF) Then
Me.Fichep = ""
Else
req = "update basi_cession set fiche='PériméP' where num_dossier='" & rs!Num_Dossier & "' and prod_id_donnees=" & rs!prod_id_données
DoCmd.RunSQL (req)
end if
laetitia02
Messages postés
424
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
12 mars 2009
129
1 févr. 2008 à 13:01
1 févr. 2008 à 13:01
ma solution je l avais deja depuis hier, mais merci quand meme, et j voulais modifier seulement le premier enregistrement car c en fonction d date, alors pas besoin de while. pour information mon rs peut comprendre au maximum 2 enregistrements avec la condition fiche is null, voila
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
1 févr. 2008 à 13:05
1 févr. 2008 à 13:05
pour moi l'update se fait bien sur des éléments du recordset :
"update basi_cession set fiche='PériméP' where num_dossier='" & rs!Num_Dossier & "' and prod_id_donnees=" & rs!prod_id_données
Effectivement il serait préférable et plus sécurisant de récupérer la clé pour faire l'update.
La base étant coté serveur, le client, lui ne voit que le résultat ... et c'est le résultat attendu qui est important et pas la manière de l'obtenir.
;o)
polux
"update basi_cession set fiche='PériméP' where num_dossier='" & rs!Num_Dossier & "' and prod_id_donnees=" & rs!prod_id_données
Effectivement il serait préférable et plus sécurisant de récupérer la clé pour faire l'update.
La base étant coté serveur, le client, lui ne voit que le résultat ... et c'est le résultat attendu qui est important et pas la manière de l'obtenir.
;o)
polux
laetitia02
Messages postés
424
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
12 mars 2009
129
1 févr. 2008 à 13:30
1 févr. 2008 à 13:30
non l update s'effectue sur ma table basi_cession, mais a partir des element du recordset, je cherche le numdosssier qui correspond au numdossier du recordset ainsi que id, mais je modifie fiche dans ma table basi_cession, la clé est récuperer grace a rs!prod_id_donnees
phil_232
Messages postés
286
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
33
1 févr. 2008 à 13:48
1 févr. 2008 à 13:48
zuuuuut, j'avais pas vu le IsNull(rs). bien sur chaque fois qu'on ouvre un rs on teste sur rs.EOF est pa s'il est NULL. mea maxima culpa
laetitia02
Messages postés
424
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
12 mars 2009
129
1 févr. 2008 à 13:51
1 févr. 2008 à 13:51
oui j avais fait une grosse erreur, j en ai honte. merci quand meme pour m avoir aider