Supprimer les enregistrements en double

Le
Phil
Bonjour à tous,

J'ai besoin de l'aide des spécialistes VBA.

Voila mon problème j'ai une table (sans clé primaire mais avec un champ
numauto) qui contient des enregistrements en double (pas le champ
numauto bien sur !).

J'ai besoin
1) d'extraire toutes les occurences des enregistrements en double dans
une table temporaire pour les analyser
2) de supprimer ces occurences de la table d'origine.
3) après traitement de la table temporaire de réintroduire les
enregistrements restants dans la table d'origine.

pour cela je procéde comme celà
1) je créé une requète qui m'indique les réf. des enregistrements en
double
2) par une requète sélection liant la table d'origine avec la requète
des doublons je créé ma table temporaire des enregistrement en double.
3) je bloque sur la suppression des enregistrements
une requète suppression entre la table d'origine et la table temporaire
ne fonctionne que si la table temporaire à une clé primaire.
Comment créé-t-on une clé primaire sur une table en VBA ?

Je vous remercie de votre aide pour créer une clé primaire en VBA

Phil
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thierry (ze Titi)
Le #6384981
Bonjour Phil !

3) je bloque sur la suppression des enregistrements
une requète suppression entre la table d'origine et la table temporaire ne
fonctionne que si la table temporaire à une clé primaire.
Comment créé-t-on une clé primaire sur une table en VBA ?
Je ne comprends pas tout... Tu nous as bien dit que tu avais un numéro

auto à chaque ligne, non ? C'est donc ça qui doit te servir de
référence pour la suppression puisque, même s'il n'est pas déclaré
comme clé primaire, indirectement c'en est une. Je ne vois donc pas
vraiment où est la difficulté. Mais peut-être qu'un détail m'échappe.
Donne nous ton VBA.

Message du dimanche 28/10/2007

Bonjour à tous,

J'ai besoin de l'aide des spécialistes VBA.

Voila mon problème j'ai une table (sans clé primaire mais avec un champ
numauto) qui contient des enregistrements en double (pas le champ numauto
bien sur !).

J'ai besoin
1) d'extraire toutes les occurences des enregistrements en double dans une
table temporaire pour les analyser
2) de supprimer ces occurences de la table d'origine.
3) après traitement de la table temporaire de réintroduire les
enregistrements restants dans la table d'origine.

pour cela je procéde comme celà
1) je créé une requète qui m'indique les réf. des enregistrements en double
2) par une requète sélection liant la table d'origine avec la requète des
doublons je créé ma table temporaire des enregistrement en double.
3) je bloque sur la suppression des enregistrements
une requète suppression entre la table d'origine et la table temporaire ne
fonctionne que si la table temporaire à une clé primaire.
Comment créé-t-on une clé primaire sur une table en VBA ?

Je vous remercie de votre aide pour créer une clé primaire en VBA

Phil


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Michel_D
Le #6384971
"Phil" <phil@> a écrit dans le message de news:
Bonjour à tous,

J'ai besoin de l'aide des spécialistes VBA.

Voila mon problème j'ai une table (sans clé primaire mais avec un champ
numauto) qui contient des enregistrements en double (pas le champ
numauto bien sur !).

J'ai besoin
1) d'extraire toutes les occurences des enregistrements en double dans
une table temporaire pour les analyser
2) de supprimer ces occurences de la table d'origine.
3) après traitement de la table temporaire de réintroduire les
enregistrements restants dans la table d'origine.

pour cela je procéde comme celà
1) je créé une requète qui m'indique les réf. des enregistrements en
double
2) par une requète sélection liant la table d'origine avec la requète
des doublons je créé ma table temporaire des enregistrement en double.

3) je bloque sur la suppression des enregistrements
une requète suppression entre la table d'origine et la table temporaire
ne fonctionne que si la table temporaire à une clé primaire.
Comment créé-t-on une clé primaire sur une table en VBA ?

Je vous remercie de votre aide pour créer une clé primaire en VBA



Ton problème porte sur l'identification des enregistrements que tu dois
garder ou supprimer, tant que tu ne trouveras pas la condition qui te
permettra de sélectionner précisément un enregistrement; essayer
d'automatiser la chose sera impossible à réaliser.

Phil
Le #6384801
Michel_D avait écrit le 29/10/2007 :
"Phil" <phil@> a écrit dans le message de
news:
Bonjour à tous,

J'ai besoin de l'aide des spécialistes VBA.

Voila mon problème j'ai une table (sans clé primaire mais avec un champ
numauto) qui contient des enregistrements en double (pas le champ
numauto bien sur !).

J'ai besoin
1) d'extraire toutes les occurences des enregistrements en double dans
une table temporaire pour les analyser
2) de supprimer ces occurences de la table d'origine.
3) après traitement de la table temporaire de réintroduire les
enregistrements restants dans la table d'origine.

pour cela je procéde comme celà
1) je créé une requète qui m'indique les réf. des enregistrements en
double
2) par une requète sélection liant la table d'origine avec la requète
des doublons je créé ma table temporaire des enregistrement en double.

3) je bloque sur la suppression des enregistrements
une requète suppression entre la table d'origine et la table temporaire
ne fonctionne que si la table temporaire à une clé primaire.
Comment créé-t-on une clé primaire sur une table en VBA ?

Je vous remercie de votre aide pour créer une clé primaire en VBA



Ton problème porte sur l'identification des enregistrements que tu dois
garder ou supprimer, tant que tu ne trouveras pas la condition qui te
permettra de sélectionner précisément un enregistrement; essayer
d'automatiser la chose sera impossible à réaliser.


Bonjour,

Les enregistrements à supprimer sont bien identifiés puisque chacun à
un champ index unique (le numauto de la table d'origine) et que cela me
sert pour lier les deux tables qui sont de structure parfaitement
identique puisque la seconde est issue d'une requète création de table
basée sur la première.

hors VBA (et aussi code en VBA), une requête suppression sur les
enregistrements sélectionnée par le lien avec une seconde table
parfaitement identique contenant une partie des enregistrements de la
table complète m'affiche un message d'erreur "suppression impossible".
si j'ajoute une clé primaire à la seconde table la reqête suppression
fonctionne.

d'où ma question comment peut on en VBA ajouter une clé primaire sur
une champ d'une table existante ?

merci de votre aide

Phil


Michel_D
Le #6384731
"Phil" <phil@> a écrit dans le message de news:
Michel_D avait écrit le 29/10/2007 :
"Phil" <phil@> a écrit dans le message de
news:
Bonjour à tous,

J'ai besoin de l'aide des spécialistes VBA.

Voila mon problème j'ai une table (sans clé primaire mais avec un champ
numauto) qui contient des enregistrements en double (pas le champ
numauto bien sur !).

J'ai besoin
1) d'extraire toutes les occurences des enregistrements en double dans
une table temporaire pour les analyser
2) de supprimer ces occurences de la table d'origine.
3) après traitement de la table temporaire de réintroduire les
enregistrements restants dans la table d'origine.

pour cela je procéde comme celà
1) je créé une requète qui m'indique les réf. des enregistrements en
double
2) par une requète sélection liant la table d'origine avec la requète
des doublons je créé ma table temporaire des enregistrement en double.

3) je bloque sur la suppression des enregistrements
une requète suppression entre la table d'origine et la table temporaire
ne fonctionne que si la table temporaire à une clé primaire.
Comment créé-t-on une clé primaire sur une table en VBA ?

Je vous remercie de votre aide pour créer une clé primaire en VBA



Ton problème porte sur l'identification des enregistrements que tu dois
garder ou supprimer, tant que tu ne trouveras pas la condition qui te
permettra de sélectionner précisément un enregistrement; essayer
d'automatiser la chose sera impossible à réaliser.


Bonjour,

Les enregistrements à supprimer sont bien identifiés puisque chacun à
un champ index unique (le numauto de la table d'origine) et que cela me
sert pour lier les deux tables qui sont de structure parfaitement
identique puisque la seconde est issue d'une requète création de table
basée sur la première.

hors VBA (et aussi code en VBA), une requête suppression sur les
enregistrements sélectionnée par le lien avec une seconde table
parfaitement identique contenant une partie des enregistrements de la
table complète m'affiche un message d'erreur "suppression impossible".
si j'ajoute une clé primaire à la seconde table la reqête suppression
fonctionne.

d'où ma question comment peut on en VBA ajouter une clé primaire sur
une champ d'une table existante ?

merci de votre aide

Phil


Voici un exemple de création de clé primaire via DAO ou ADOX, par
contre je ne vois pas l'intérét de créer une table intermédiaire pour
réaliser la suppression de doublons, cela doit surement être
réalisable via une ou des requêtes sucessives, mais sans plus de
détail se sera dur de t'aider.

DAO
Sub DAOCreatePrimaryKey()
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Dim idx As DAO.Index

' Ouverture de la base de données
Set db = DBEngine.OpenDatabase(".Comptoir.mdb")
Set tbl = db.TableDefs("Contacts")

' Créer la clé primaire et lui ajouter les colonnes de table.
Set idx = tbl.CreateIndex("Clé primaire")
idx.Primary = True
idx.Fields.Append idx.CreateField("N° contact")

' Ajouter un objet Index à la
' collection Indexes de l'objet TableDef.
tbl.Indexes.Append idx

db.Close
End Sub
ADOX
Sub ADOCreatePrimaryKey()
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim pk As New ADOX.Key

' Ouverture du catalogue
cat.Activeconnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.Comptoir.mdb;"
Set tbl = cat.Tables("Contacts")

' Créer la clé primaire et lui ajouter les colonnes de table.
pk.Name = "Clé primaire"
pk.Type = adKeyPrimary
pk.Columns.Append "N° contact"

' Ajouter l'objet Key à la collection Keys de l'objet Table
tbl.Keys.Append pk

Set cat = Nothing
End Sub



Phil
Le #6384571
"Phil" <phil@> a écrit dans le message de
news:
Michel_D avait écrit le 29/10/2007 :
"Phil" <phil@> a écrit dans le message de
news:
Bonjour à tous,

J'ai besoin de l'aide des spécialistes VBA.

Voila mon problème j'ai une table (sans clé primaire mais avec un champ
numauto) qui contient des enregistrements en double (pas le champ
numauto bien sur !).

J'ai besoin
1) d'extraire toutes les occurences des enregistrements en double dans
une table temporaire pour les analyser
2) de supprimer ces occurences de la table d'origine.
3) après traitement de la table temporaire de réintroduire les
enregistrements restants dans la table d'origine.

pour cela je procéde comme celà
1) je créé une requète qui m'indique les réf. des enregistrements en
double
2) par une requète sélection liant la table d'origine avec la requète
des doublons je créé ma table temporaire des enregistrement en double.

3) je bloque sur la suppression des enregistrements
une requète suppression entre la table d'origine et la table temporaire
ne fonctionne que si la table temporaire à une clé primaire.
Comment créé-t-on une clé primaire sur une table en VBA ?

Je vous remercie de votre aide pour créer une clé primaire en VBA



Ton problème porte sur l'identification des enregistrements que tu dois
garder ou supprimer, tant que tu ne trouveras pas la condition qui te
permettra de sélectionner précisément un enregistrement; essayer
d'automatiser la chose sera impossible à réaliser.


Bonjour,

Les enregistrements à supprimer sont bien identifiés puisque chacun à
un champ index unique (le numauto de la table d'origine) et que cela me
sert pour lier les deux tables qui sont de structure parfaitement
identique puisque la seconde est issue d'une requète création de table
basée sur la première.

hors VBA (et aussi code en VBA), une requête suppression sur les
enregistrements sélectionnée par le lien avec une seconde table
parfaitement identique contenant une partie des enregistrements de la
table complète m'affiche un message d'erreur "suppression impossible".
si j'ajoute une clé primaire à la seconde table la reqête suppression
fonctionne.

d'où ma question comment peut on en VBA ajouter une clé primaire sur
une champ d'une table existante ?

merci de votre aide

Phil


Voici un exemple de création de clé primaire via DAO ou ADOX, par
contre je ne vois pas l'intérét de créer une table intermédiaire pour
réaliser la suppression de doublons, cela doit surement être
réalisable via une ou des requêtes sucessives, mais sans plus de
détail se sera dur de t'aider.

DAO
Sub DAOCreatePrimaryKey()
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Dim idx As DAO.Index

' Ouverture de la base de données
Set db = DBEngine.OpenDatabase(".Comptoir.mdb")
Set tbl = db.TableDefs("Contacts")

' Créer la clé primaire et lui ajouter les colonnes de table.
Set idx = tbl.CreateIndex("Clé primaire")
idx.Primary = True
idx.Fields.Append idx.CreateField("N° contact")

' Ajouter un objet Index à la
' collection Indexes de l'objet TableDef.
tbl.Indexes.Append idx

db.Close
End Sub
ADOX
Sub ADOCreatePrimaryKey()
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim pk As New ADOX.Key

' Ouverture du catalogue
cat.Activeconnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.Comptoir.mdb;"
Set tbl = cat.Tables("Contacts")

' Créer la clé primaire et lui ajouter les colonnes de table.
pk.Name = "Clé primaire"
pk.Type = adKeyPrimary
pk.Columns.Append "N° contact"

' Ajouter l'objet Key à la collection Keys de l'objet Table
tbl.Keys.Append pk

Set cat = Nothing
End Sub


merci pour cette aide

J'ai fais de multiples essais et je retombe toujours sur ce foutu
message d'erreur. Pour contourner le problème j'ai fini par changer la
table recevant les doublons, je l'ai transformé en table permanente
avec une clé primaire et le problème est contourné sans que celà me
convienne parfaitement.

Pour ma culture Access quelles requêtes et actions pouvez vous me
proposer pour :
déplacer d'une table permanente "Origine" vers une table "temporaire"
(créée pour ce traitement) tous les enregistrements de la table
"origine" dont la valeur du champ [numero] a plus d'une occurence pour
chaque valeur ou autrement exprimé tous les enregistrements dont la
valeur du champ [numero] est en double ou plus.

exemple de table "origine"
[ChIndex],[Numero],[....
1,145238,...
2,146485,...
3,145238,...
4,145238,...
5,154789,...
6,365745,...
7,146485,...

après j'ai besoin que la table "origine" contienne :
[ChIndex],[Numero],[....
5,154789,...
6,365745,...

et la table "temporaire" contienne :
[ChIndex],[Numero],[....
1,145238,...
2,146485,...
3,145238,...
4,145238,...
7,146485,...

merci de votre aide

Phil




Phil
Le #6384561
"Phil" <phil@> a écrit dans le message de
news:
Michel_D avait écrit le 29/10/2007 :
"Phil" <phil@> a écrit dans le message de
news:
Bonjour à tous,

J'ai besoin de l'aide des spécialistes VBA.

Voila mon problème j'ai une table (sans clé primaire mais avec un champ
numauto) qui contient des enregistrements en double (pas le champ
numauto bien sur !).

J'ai besoin
1) d'extraire toutes les occurences des enregistrements en double dans
une table temporaire pour les analyser
2) de supprimer ces occurences de la table d'origine.
3) après traitement de la table temporaire de réintroduire les
enregistrements restants dans la table d'origine.

pour cela je procéde comme celà
1) je créé une requète qui m'indique les réf. des enregistrements en
double
2) par une requète sélection liant la table d'origine avec la requète
des doublons je créé ma table temporaire des enregistrement en double.

3) je bloque sur la suppression des enregistrements
une requète suppression entre la table d'origine et la table temporaire
ne fonctionne que si la table temporaire à une clé primaire.
Comment créé-t-on une clé primaire sur une table en VBA ?

Je vous remercie de votre aide pour créer une clé primaire en VBA



Ton problème porte sur l'identification des enregistrements que tu dois
garder ou supprimer, tant que tu ne trouveras pas la condition qui te
permettra de sélectionner précisément un enregistrement; essayer
d'automatiser la chose sera impossible à réaliser.


Bonjour,

Les enregistrements à supprimer sont bien identifiés puisque chacun à
un champ index unique (le numauto de la table d'origine) et que cela me
sert pour lier les deux tables qui sont de structure parfaitement
identique puisque la seconde est issue d'une requète création de table
basée sur la première.

hors VBA (et aussi code en VBA), une requête suppression sur les
enregistrements sélectionnée par le lien avec une seconde table
parfaitement identique contenant une partie des enregistrements de la
table complète m'affiche un message d'erreur "suppression impossible".
si j'ajoute une clé primaire à la seconde table la reqête suppression
fonctionne.

d'où ma question comment peut on en VBA ajouter une clé primaire sur
une champ d'une table existante ?

merci de votre aide

Phil


Voici un exemple de création de clé primaire via DAO ou ADOX, par
contre je ne vois pas l'intérét de créer une table intermédiaire pour
réaliser la suppression de doublons, cela doit surement être
réalisable via une ou des requêtes sucessives, mais sans plus de
détail se sera dur de t'aider.

DAO
Sub DAOCreatePrimaryKey()
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Dim idx As DAO.Index

' Ouverture de la base de données
Set db = DBEngine.OpenDatabase(".Comptoir.mdb")
Set tbl = db.TableDefs("Contacts")

' Créer la clé primaire et lui ajouter les colonnes de table.
Set idx = tbl.CreateIndex("Clé primaire")
idx.Primary = True
idx.Fields.Append idx.CreateField("N° contact")

' Ajouter un objet Index à la
' collection Indexes de l'objet TableDef.
tbl.Indexes.Append idx

db.Close
End Sub
ADOX
Sub ADOCreatePrimaryKey()
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim pk As New ADOX.Key

' Ouverture du catalogue
cat.Activeconnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.Comptoir.mdb;"
Set tbl = cat.Tables("Contacts")

' Créer la clé primaire et lui ajouter les colonnes de table.
pk.Name = "Clé primaire"
pk.Type = adKeyPrimary
pk.Columns.Append "N° contact"

' Ajouter l'objet Key à la collection Keys de l'objet Table
tbl.Keys.Append pk

Set cat = Nothing
End Sub


merci pour cette aide

J'ai fais de multiples essais
et je retombe toujours sur ce foutu message
d'erreur.
avant de recevoir la réponse de Michel_D !!!

excusez moi de cette ambiguïté dans mon post précédent.
Pour contourner le problème j'ai fini par changer la table recevant
les doublons, je l'ai transformé en table permanente avec une clé primaire et
le problème est contourné sans que celà me convienne parfaitement.

Pour ma culture Access quelles requêtes et actions pouvez vous me proposer
pour :
déplacer d'une table permanente "Origine" vers une table "temporaire" (créée
pour ce traitement) tous les enregistrements de la table "origine" dont la
valeur du champ [numero] a plus d'une occurence pour chaque valeur ou
autrement exprimé tous les enregistrements dont la valeur du champ [numero]
est en double ou plus.

exemple de table "origine"
[ChIndex],[Numero],[....
1,145238,...
2,146485,...
3,145238,...
4,145238,...
5,154789,...
6,365745,...
7,146485,...

après j'ai besoin que la table "origine" contienne :
[ChIndex],[Numero],[....
5,154789,...
6,365745,...

et la table "temporaire" contienne :
[ChIndex],[Numero],[....
1,145238,...
2,146485,...
3,145238,...
4,145238,...
7,146485,...

merci de votre aide

Phil






Michel_D
Le #6384501
"Phil" <phil@> a écrit dans le message de news:
"Phil" <phil@> a écrit dans le message de
news:
Michel_D avait écrit le 29/10/2007 :
"Phil" <phil@> a écrit dans le message de
news:
Bonjour à tous,

J'ai fais de multiples essais et je retombe toujours sur ce foutu




message d'erreur. Pour contourner le problème j'ai fini par changer la
table recevant les doublons, je l'ai transformé en table permanente
avec une clé primaire et le problème est contourné sans que celà me
convienne parfaitement.

Pour ma culture Access quelles requêtes et actions pouvez vous me
proposer pour :
déplacer d'une table permanente "Origine" vers une table "temporaire"
(créée pour ce traitement) tous les enregistrements de la table
"origine" dont la valeur du champ [numero] a plus d'une occurence pour
chaque valeur ou autrement exprimé tous les enregistrements dont la
valeur du champ [numero] est en double ou plus.

exemple de table "origine"
[ChIndex],[Numero],[....
1,145238,...
2,146485,...
3,145238,...
4,145238,...
5,154789,...
6,365745,...
7,146485,...

après j'ai besoin que la table "origine" contienne :
[ChIndex],[Numero],[....
5,154789,...
6,365745,...

et la table "temporaire" contienne :
[ChIndex],[Numero],[....
1,145238,...
2,146485,...
3,145238,...
4,145238,...
7,146485,...



Avant de répondre, il faut savoir déja la finalité du traitement, à savoir

Q) Est-ce que c'est juste pour éliminer des doublons dans une table ?

R) Si c'est le cas, il faut trouver la condition qui te permet précisément
d'identifier les enregistrements en double à supprimer (voir le
traitement que tu réalise sur ta table temporaire que tu ne précise pas),
puis requête de suppression.

En gros, si la table temporaire ne te sert que pour réaliser la suppression
des doublons, il faut mettre en oeuvre une autre méthode qui ne nécessite
pas la création d'une table temporaire sauf si le traitement réalisé sur la
table temporaire est "manuel" auquel cas c'est plus la conception de la
base qu'il faut revoir.





Phil
Le #6384391
"Phil" <phil@> a écrit dans le message de
news:
"Phil" <phil@> a écrit dans le message de
news:
Michel_D avait écrit le 29/10/2007 :
"Phil" <phil@> a écrit dans le message de
news:
Bonjour à tous,

J'ai fais de multiples essais et je retombe toujours sur ce foutu




message d'erreur. Pour contourner le problème j'ai fini par changer la
table recevant les doublons, je l'ai transformé en table permanente
avec une clé primaire et le problème est contourné sans que celà me
convienne parfaitement.

Pour ma culture Access quelles requêtes et actions pouvez vous me
proposer pour :
déplacer d'une table permanente "Origine" vers une table "temporaire"
(créée pour ce traitement) tous les enregistrements de la table
"origine" dont la valeur du champ [numero] a plus d'une occurence pour
chaque valeur ou autrement exprimé tous les enregistrements dont la
valeur du champ [numero] est en double ou plus.

exemple de table "origine"
[ChIndex],[Numero],[....
1,145238,...
2,146485,...
3,145238,...
4,145238,...
5,154789,...
6,365745,...
7,146485,...

après j'ai besoin que la table "origine" contienne :
[ChIndex],[Numero],[....
5,154789,...
6,365745,...

et la table "temporaire" contienne :
[ChIndex],[Numero],[....
1,145238,...
2,146485,...
3,145238,...
4,145238,...
7,146485,...



Avant de répondre, il faut savoir déja la finalité du traitement, à savoir

Q) Est-ce que c'est juste pour éliminer des doublons dans une table ?
voir la description du premier post et ci-dessous


R) Si c'est le cas, il faut trouver la condition qui te permet précisément
d'identifier les enregistrements en double à supprimer
le champ [numero] en plusieurs exemplaires identiques


(voir le
traitement que tu réalise sur ta table temporaire que tu ne précise pas)


dans la table "temporaire" des doublons j'effectue plusieurs contrôles
sur trois champs distincts et ne conserve au final à l'issue des
contrôles qu'un enregistrement pour chaque occurence du champ [numero]
exemple succint des contrôles
le champ [code] correspond il à une valeur de la table de référence ?
si oui combien y a-t-il d'enregistrements correspondants ?
si c'est un
combien y a-t-il de valeurs distinctes du champ
[Heure de traitement] ?
si =1 je réintroduis dans la table "origine" le premier
enregistrement dans la table "origine"
si c'est >1 je teste les valeurs du champ [Heure de traitement]
etc ...
si c'est >1 signalement d'une anomalie à traiter manuellement.

si c'est nom c'est que le code est un des deux codes génériques
si le code =0
etc ...

d'où mon besoin d'isoler les enregistrements contenants des doublons
dans une table spécifique.

pour répondre à la question sur pourquoi y a-t-il des doublons ?
mon application gére des données issues d'une application, sur laquelle
je n'ai aucune possibilité d'action, exportant des données sous format
excel (> 200 000 enregistrements par an) pour un traitement au fil de
l'eau quotidien.
après un premier traitement quotidien certaines données en anomalies (5
à 20%) sont envoyées sous forme de 13 fichiers excel distincts à de
multiples utilisateurs (>50) qui recoivent chacun un des 13 fichiers et
qui retournent le fichier avec certaines données corrigées (celles le
concernant) dans des délais variables.

les corrections reçues sont compilées régulièrement, dans la table
"origine" et mon application doit traiter les doublons car chacun des
13 fichiers quotidiens identiques me reviennent en plusieurs version
avec quelques données corrigées dans chaque version et parfois les
mêmes données corrigées de manière identiques (doublons simple) ou
parfois des corrections différentes d'où les test décrits ci-dessus.

puis requête de suppression.

En gros, si la table temporaire ne te sert que pour réaliser la suppression
des doublons, il faut mettre en oeuvre une autre méthode qui ne nécessite
pas la création d'une table temporaire



sauf si le traitement réalisé sur la
table temporaire est "manuel" auquel cas c'est plus la conception de la
base qu'il faut revoir.
le traitement de la table temporaire est automatique (voir ci-dessus)


merci pour ton aide et d'avoir consacré du temps à mon pb.
j'ai controurné le problème et celà répond à mon besoin.
je persiste à penser qu'il y a dans mon problème une règle de
fonctionnement d'access que je ne respecte pas car ne la connaissant
pas, plus qu'un pb de conception de mon traitement.
Je considère le pb comme clos, merci encore de ton aide

Phil






Michel_D
Le #6384381
"Phil" <phil@> a écrit dans le message de news:
"Phil" <phil@> a écrit dans le message de
news:
"Phil" <phil@> a écrit dans le message de
news:
Michel_D avait écrit le 29/10/2007 :
"Phil" <phil@> a écrit dans le message de
news:
Bonjour à tous,

J'ai fais de multiples essais et je retombe toujours sur ce foutu




message d'erreur. Pour contourner le problème j'ai fini par changer la
table recevant les doublons, je l'ai transformé en table permanente
avec une clé primaire et le problème est contourné sans que celà me
convienne parfaitement.

Pour ma culture Access quelles requêtes et actions pouvez vous me
proposer pour :
déplacer d'une table permanente "Origine" vers une table "temporaire"
(créée pour ce traitement) tous les enregistrements de la table
"origine" dont la valeur du champ [numero] a plus d'une occurence pour
chaque valeur ou autrement exprimé tous les enregistrements dont la
valeur du champ [numero] est en double ou plus.

exemple de table "origine"
[ChIndex],[Numero],[....
1,145238,...
2,146485,...
3,145238,...
4,145238,...
5,154789,...
6,365745,...
7,146485,...

après j'ai besoin que la table "origine" contienne :
[ChIndex],[Numero],[....
5,154789,...
6,365745,...

et la table "temporaire" contienne :
[ChIndex],[Numero],[....
1,145238,...
2,146485,...
3,145238,...
4,145238,...
7,146485,...



Avant de répondre, il faut savoir déja la finalité du traitement, à savoir

Q) Est-ce que c'est juste pour éliminer des doublons dans une table ?
voir la description du premier post et ci-dessous


R) Si c'est le cas, il faut trouver la condition qui te permet précisément
d'identifier les enregistrements en double à supprimer
le champ [numero] en plusieurs exemplaires identiques


(voir le
traitement que tu réalise sur ta table temporaire que tu ne précise pas)


dans la table "temporaire" des doublons j'effectue plusieurs contrôles
sur trois champs distincts et ne conserve au final à l'issue des
contrôles qu'un enregistrement pour chaque occurence du champ [numero]
exemple succint des contrôles
le champ [code] correspond il à une valeur de la table de référence ?
si oui combien y a-t-il d'enregistrements correspondants ?
si c'est un
combien y a-t-il de valeurs distinctes du champ
[Heure de traitement] ?
si =1 je réintroduis dans la table "origine" le premier
enregistrement dans la table "origine"
si c'est >1 je teste les valeurs du champ [Heure de traitement]
etc ...
si c'est >1 signalement d'une anomalie à traiter manuellement.

si c'est nom c'est que le code est un des deux codes génériques
si le code =0
etc ...

d'où mon besoin d'isoler les enregistrements contenants des doublons
dans une table spécifique.

pour répondre à la question sur pourquoi y a-t-il des doublons ?
mon application gére des données issues d'une application, sur laquelle
je n'ai aucune possibilité d'action, exportant des données sous format
excel (> 200 000 enregistrements par an) pour un traitement au fil de
l'eau quotidien.
après un premier traitement quotidien certaines données en anomalies (5
à 20%) sont envoyées sous forme de 13 fichiers excel distincts à de
multiples utilisateurs (>50) qui recoivent chacun un des 13 fichiers et
qui retournent le fichier avec certaines données corrigées (celles le
concernant) dans des délais variables.

les corrections reçues sont compilées régulièrement, dans la table
"origine" et mon application doit traiter les doublons car chacun des
13 fichiers quotidiens identiques me reviennent en plusieurs version
avec quelques données corrigées dans chaque version et parfois les
mêmes données corrigées de manière identiques (doublons simple) ou
parfois des corrections différentes d'où les test décrits ci-dessus.

puis requête de suppression.

En gros, si la table temporaire ne te sert que pour réaliser la suppression
des doublons, il faut mettre en oeuvre une autre méthode qui ne nécessite
pas la création d'une table temporaire



sauf si le traitement réalisé sur la
table temporaire est "manuel" auquel cas c'est plus la conception de la
base qu'il faut revoir.
le traitement de la table temporaire est automatique (voir ci-dessus)


merci pour ton aide et d'avoir consacré du temps à mon pb.
j'ai controurné le problème et celà répond à mon besoin.
je persiste à penser qu'il y a dans mon problème une règle de
fonctionnement d'access que je ne respecte pas car ne la connaissant
pas, plus qu'un pb de conception de mon traitement.
Je considère le pb comme clos, merci encore de ton aide



Ok, si cela te convient comme cela.







Publicité
Poster une réponse
Anonyme