PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Copie de fichiers d'une base à l'autre avec une classe
Copie de fichiers d'une base à l'autre avec une classe
Débuté par LC66, 01 fév. 2026 14:07 - Aucune réponse
Posté le 01 février 2026 - 14:07
Bonjour à tous,
Dans un programme type "service" (sans analyse), je dois copier le contenu d'un fichier ARTICLES.FIC d'une base SOURCE
vers une base CIBLE, j'utilise donc une classe comme ci_dessous :
ClasseARTICLES est une Classe <MAPPING=ARTICLES>
<MAPPING>
m_ART_CODESOCIETE est une chaîne <MAPPING=ART_CODESOCIETE>
m_ART_CODE est une chaîne <MAPPING=ART_CODE>
m_ART_DESIGNATION est une chaîne <MAPPING=ART_DESIGNATION>
m_ART_PHOTO est un Buffer <MAPPING=ART_PHOTO>
<FIN>
FIN

voici le code pour copier le contenu le contenu de la base de données SOURCE vers CIBLE
ARTICLES_SOURCE, ARTICLES_CIBLE est une Source dede Données
ClTransfertARTICLES est ClasseARTICLES
TabARTICLES est tableau de ClasseARTICLES

//------------------------------------------------------------------------------------------
// Déclaration du fichier physique SOURCE et récupération des données dans un tableau
//------------------------------------------------------------------------------------------
//Connexion à la base
ConnexionBDD_SOURCE()

//Déclaration fichier
HDéclareExterne(".\ARTICLES.FIC",ARTICLES_SOURCE,ConnexionSOURCE)
HChangeConnexion(ARTICLES_SOURCE,ConnexionSOURCE)
HOuvre(ARTICLES_SOURCE)

//Transfert des données
FichierVersTableau(TabARTICLES,ARTICLES_SOURCE)

//Fermeture de la base
HFermeConnexion(ConnexionSOURCE)

//------------------------------------------------------------------------------------------
// Déclaration du fichier physique CIBLE et écriture des données venant du tableau
//------------------------------------------------------------------------------------------
//Connexion à la base
ConnexionBDD_CIBLE()

//Déclaration fichier
HDéclareExterne(".\ARTICLES.FIC",ARTICLES_CIBLE,ConnexionCIBLE)
HChangeConnexion(ARTICLES_CIBLE,ConnexionCIBLE)

//lecture de la table pour insertion ou mise à jour
POUR TOUT ClTransfertARTICLES de TabARTICLES
//Test si clé déjà existante
SI HLitRecherchePremier(ARTICLES_CIBLE,ART_CODESOCIETECODE,ClTransfertARTICLES:m_ART_CODESOCIETE,ClTransfertARTICLES:m_ART_CODE]) = Faux ALORS
MémoireVersFichier(ClTransfertARTICLES,ARTICLES_CIBLE)
HAjoute(ARTICLES_CIBLE,hVérifieDoublon+hVérifieIntégrité)
SINON
MémoireVersFichier(ClTransfertARTICLES,ARTICLES_CIBLE)
HModifie(ARTICLES_CIBLE,hNumEnrEnCours,hVérifieDoublon+hVérifieIntégrité)
FIN
FIN

//Fermeture de la base
HFermeConnexion(ConnexionCIBLE)


Au moment de la lise à jour des articles, j'ai une erreur :
impossible de lite le fichier C:\...\ARTICLES.mmo
lorsque je met en commentaire la ligne dans la classe : ART_PHOTO
cela fonctionne très bien, c'est donc du à priori à ce champ de type image (les photos des articles)
comment dois je faire ?