[Résolu][Base] importation fichier et gestion des doublons

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Eric_03
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 31 déc. 2017 18:01

[Résolu][Base] importation fichier et gestion des doublons

Message par Eric_03 »

Bonjour,

Ce post fait suite à celui ci: https://forum.openoffice.org/fr/forum/v ... =8&t=57199

Les fichiers que je dois importer dans ma base conserve souvent des demandes déjà intégrées. En effet seules les demandes traitées dans l'application gros système disparaissent du fichier récupéré hebdomadairement. Cette Base Libre office me permet de gérer les différentes demandes de manière extra comptable (courriers, demande de renseignements qui ne sont pas gérer par le gros système)

Ma question concerne donc la façon de gérer les doublons.

Après plusieurs recherches deux grandes manières de résoudre les problèmes apparaissent:

https://forum.openoffice.org/fr/forum/v ... =9&t=31329

h**p://sql.sh/138-methode-supprimer-doublons

h**p://sqlpro.developpez.com/cours/doublons/#L3

I Au moment de l'importation

création d'une boucle qui permet de vérifier si la ligne importée n'existe pas déjà dans la base

II Ou après l'importation

Dans ce cas la suppression de la clé primaire me semble nécessaire. Grace à cette suppression je pourrai importer tous les enregistrements et traiter les doublons comme suggérés sur les divers sites.

Ou bien je crée une table temporaire qui viendra ensuite enrichir une autre table.

Il me semble que la meilleure approche est celle qui s'effectue au moment de l'importation.

Qu'en pensez vous?

J'ai testé cela mais sans succès:

Code : Tout sélectionner

	if ("SELECT *"" FROM ""t_europa"" WHERE EXISTS ""Demande"" =" & a(3)) then
	
	else
		u = ubound(lines)+1
		redim preserve lines(u)
		lines(u) = "INSERT INTO ""t_europa"" VALUES ('" & join(a(), "','") & "')"
	end if 
Merci
Eric
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Eric_03 le 10 mars 2018 11:21, modifié 2 fois.
Version: 6.2.3.2 (x64)
OS Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] importation fichier et gestion des doublons

Message par Piaf »

Bonjour
Je pense que le plus simple serait d'importer les nouvelles données dans une table dédiée, table à vider après l'ajout des données supplémentaire dans la table des données.
Quelque chose du genre

Code : Tout sélectionner

Sub MAJ
Dim maConnexion as Object, statement as Object
Dim a(11) as String, strSQL as String
	maConnexion = thisDatabaseDocument.CurrentController.ActiveConnection
	a(0) = """Dossier"""
	a(1) = """Redevable"""
	a(2) = """Siren"""
	a(3) = """Demande"""
	a(4) = """PR"""
	a(5) = """Periode"""
	a(6) = """Montant"""
	a(7) = """ICR"""
	a(8) = """DEL"""
	a(9) = """Circuit"""
	a(10) = """DEP"""
	a(11) = """Date"""
	strSQL = "INSERT INTO ""Table des données"" SELECT " & join(a(), ",") & _
 "  FROM ""Table d'importation"" WHERE NOT ""Table d'importation"".""Demande"" IN ( SELECT ""Table des données"".""Demande"" FROM ""Table des données"" )	
	statement = maConnexion.createStatement()
	statement.execute(strSQL)
End Sub
En reprenant le codage d'Hubert Lambert :) .
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Eric_03
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 31 déc. 2017 18:01

Re: [Base] importation fichier et gestion des doublons

Message par Eric_03 »

Merci

Je teste et vous fais un retour

Fonctionne parfaitement :super:
Cordialement
Eric
Version: 6.2.3.2 (x64)
OS Windows 10