|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
Bonjour à tous,
J'ai une table temporaire qui est alimentée par une requête ajout dont l'un des champs est la date du jour ( plus précisément maintenant() ). Or je considère comme un doublon un enregistrement identique dont seul diffère le champ date en raison de l'heure de la journée. Pour cela j'ai défini le champ date de la table temporaire avec une format date abrégé ( 16-juin-07) pensant que cela suffirait à tronquer le contenu du champ de sa partie horaire, mais après avoir fait une requête recherche de doublons dans la table sur ce champ précis cela ne me ramène rien alors qu'il devrait y avoir au moins deux enregistrements. Alors je sollicite vos avis d'expert: - j'envisage, pour éviter la partie horaire de la donnée, de modifier la requête ajout en mettant une contrainte de format au champ date =maintenant()... Qu'en pensez-vous ? avez-vous une solution plus adaptée ? Pour info, le code de la requête ajout ( sans format): Code :
|
||
|
|
00
|
|
|
#2 |
![]() ![]() |
salut,
2 questions pour ma part avant de pouvoir te proposer la solution la plus adequate : - tu consideres qu'un doublon c'est sur la meme journee (peu importe l'heure), ou bien a la meme journee + meme horaire ? - dans le cas ou tu as deja une donnee dans ta table (cas ou tu consideres au'il y aurait doublon apres insertion), tu ecrases les donnees existantes avec les nouvelles ou bien tu n'inseres pas de nouvelles donnees ?
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
Salut Jean-Philippe,
Merci pour ton coup de main, voici mes réponses: - le doublon existe dans une même journée quelque soit l'heure; - en cas de doublon , l'ajout ne doit pas se faire. |
|
|
00
|
|
|
#4 |
![]() ![]() |
ok,
mon approche dans ce cas serait : - inserer dans une table temporaire tous les enregistrements (INSERT) - supprimer dans cette table tous les enregistrements dont les infos sont deja dans la table finale (DELETE) - inserer tous les enregistrements restant dans la table finale (INSERT) Le fait de ne travailler que sur la date d'une journee fait juste qu'au lieu de faire un filtre/une jointure sur le champs champdate, tu travailles avec Format(champdate,"MM/DD/YYYY") par exemple
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
bien , j'essaie de comprendre ta proposition:
- une autre table temp me permetrait de faire le tri des doublons avant insertion définitive dans la table: temp_journal_even - en revanche c'est sur le tri que je ne te suis plus : peux-tu m'expliquer comment tu le ferais, en fonction du format de date ? |
|
|
00
|
|
|
#6 |
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
j'ai par ailleurs pensé à expérimenter un index sur la table: temp_journal_even, afin d'éviter les doublons en prenant soin de de désactiver/ réactiver les messages d'erreur
reste que je sais pas si Now() est compatible avec une contrainte de format ... |
|
|
00
|
|
|
#7 |
![]() ![]() |
etape 1, on insert tous les enregistrements dans la table temp
Code SQL :
SELECT * INTO TEMP FROM TableDepart Code SQL :
DELETE TEMP.* WHERE TEMP.ID & format(dt,'yyyymmdd') IN (SELECT ID & format(dt,'yyyymmdd') FROM TABLEFINALE) Code SQL :
INSERT INTO TABLEFINALE SELECT * FROM TEMP
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
|
00
|
|
|
#8 |
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
Je te remercie pour ces précisions, je teste demain matin ( pas le temps ce soir
A bientôt, Kénavo, Sébastien |
|
|
00
|
|
|
#9 | ||||
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
Bonjour JP,
J'ai une petite question sur le SQL de suppression des doublons: - cela enlève tous des enregistrements dont la date est identique pour un id identique ( si j'ai bien compris ton code - en revanche ça ne prend pas en compte les autres champs de la table temp finale ... Mon code modifié (avec des erreurs surement): Code :
Pour prendre en compte d'autres champs ( code à corriger): Code :
Bien cordialement, |
||||
|
|
00
|
|
|
#10 |
![]() ![]() |
Hello,
oui, il s'agissait bien d'un exemple, comme je n'ai pas la moindre idee des champs qui sont etre tes cles primaires, pas de solution toute faite Pour la requete de delete, le plus simple est de creer dans l'interface access ta requete juste de selection (avec les jointures), ce afin de pouvoir facilement passer d'une structure SELECT a une structure DELETE
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
ok, j'essaie ça en début d'après-midi
A bientôt, |
|
|
00
|
|
|
#12 | ||||
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
Bon, finalement j'ai un peu de temps...
J'ai crée dans l'éditeur de requête une DELETE dont l'affichage remonte bien les 7 enregistrements attendus, mais quant je lance l'exécution, access me demande de préciser la table objet de la suppression... et là je coince Voici le code : Code :
Code :
|
||||
|
|
00
|
|
|
#13 | ||||
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
Salut JP,
Comment passer la structure select dont le code figure ci-dessus à la structure delete selon le modèle que tu m'as suggéré ? Voici mon essai: Code :
Je viens de tester ( runsql sqlb) et j'ai un message d'erreur '3075' m'indiquant le sqlb... idem pour cette syntaxe: Code :
|
||||
|
|
00
|
|
|
#14 | ||
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
Bonjour,
Je viens d'essayer cette syntaxe: Code :
|
||
|
|
00
|
|
|
#15 | ||
![]() ![]() |
Salut,
dans ces cas la, il faut partir a la chasse aux espaces manquant ![]() Ici il en manque un a la fin de ta premiere ligne avant le FROM Code :
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
||
|
00
|
|
|
#16 |
|
Membre à l'essai
![]() Sébastien Inscription : mars 2010 Messages : 160 ![]() |
JP t'es un AS !
ça marche au poil !! ![]() ![]() ![]() Je te remercie pour ta patience et ton aide précieuse . Kénavo, Sébastien, ( Je clos) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com