|
Accueil → WINDEV 2024 → Copie d'enregistrements d'un fichier d'une base de données à une autre en HF/CS |
Copie d'enregistrements d'un fichier d'une base de données à une autre en HF/CS |
Débuté par Soledad, 11 mai 2015 17:11 - 4 réponses |
| |
| | | |
|
| |
Posté le 11 mai 2015 - 17:11 |
Bonjour,
Je cherche à copier les enregistrements d'un fichier dont je ne connais pas le nom et qui est renseigné par l'utilisateur dans un autre fichier dont je ne connais pas le nom renseigné par le même utilisateur, d'une base de données renseignée par l'utilisateur dans une autre base de données et vous l'avez deviné, renseigné par l'utilisateur.
Voici le code qui ne fonctionne pas : Il est évident que les fichiers et base de données existent
sFicO, sFicD, sWhere, sBddO, sBddD, sSqlO, sSqlD est une chaîne sdSqlO, sdSqlD est une Source de Données
sBddO='PREPROD' sBddD='PROD'
sFicO='Article' sFicD='Artcile'
sWhere="WHERE CodeArt='AA128'
HDécritConnexion(cnxO,"Admin","","srv1",sBddO,hAccèsHFClientServeur) HDécritConnexion(cnxD,"Admin","","srv2",sBddD,hAccèsHFClientServeur)
HChangeConnexion(sdSqlO,cnxO) SI PAS HExécuteRequêteSQL(sdSqlO,hModifieFichier,sSqlO) ALORS Erreur("Impossible d'exécuter la requête Source "+sBddO,"",HErreur()); RETOUR HChangeConnexion(sdSqlD,cnxD) SI PAS HExécuteRequêteSQL(sdSqlD,hModifieFichier,sSqlD) ALORS Erreur("Impossible d'exécuter la requête de destination "+sBddD,"",HErreur()); RETOUR
sSqlD="SELECT * FROM "+sFicO+" "+sWhere SI PAS HExécuteRequêteSQL(sdSqlD,cnxD,sSqlD) ALORS Erreur("Impossible d'exécuter la requête de destination "+sBddD,"",HErreur()); RETOUR
POUR TOUT sdSqlO HRAZ(sdSqlD) HCopieEnreg(sdSqlD,sdSqlO,hValDéfaut) HAjoute(sdSqlD) FIN HAnnuleDéclaration(sdSqlD); HAnnuleDéclaration(sdSqlO)
Il semble que tout s'exécute sur le fichier et la base de données source.
Pour information, j'ai utiliser la même procédure avec des connexions OLEDB (avec la syntaxe qui va avec) sur des bases Gupta et à ma grande surprise cela fonctionne.
J'insiste sur le fait que le code doit prévoir que les fichiers et bases de données doivent être paramétrables et qu'ils peuvent posséder des noms différents.
Par avance, merci de votre aide. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 574 messages Popularité : +222 (260 votes) |
|
Posté le 12 mai 2015 - 06:31 |
Bonjour,
Pour ton problème, il te faut remplacer HChangeConnexion(sdSqlO,cnxO) et HChangeConnexion(sdSqlD,cnxD) par HChangeConnexion(sFicO,cnxO) et HChangeConnexion(sFicD,cnxD). En effet, ce sont les fichiers qui doivent changer de connexion et non les sources de données.
Personnellement, j'aurais fait quelque chose comme ça:
cnxO est une Connexion cnxD est Connexion sFicO, sFicD, sBddO, sBddD est une chaîne
sBddO="PREPROD" sBddD="PROD"
sFicO="Article" sFicD="Artcile"
HDécritConnexion(cnxO,"Admin","","srv1",sBddO,hAccèsHFClientServeur) ALORS HDécritConnexion(cnxD,"Admin","","srv2",sBddD,hAccèsHFClientServeur) HChangeConnexion(sFicO,cnxO) HChangeConnexion(sFicD,cnxD)
POUR TOUT {sFicO,indFichier} AVEC "CodeArt" = "AA128" HRAZ(sFicD) HCopieEnreg(sFicD,sFicO) HAjoute(sFicD) FIN
Si le POUR TOUT ne fonctionne pas, tu peux le faire avec un parcours HLitRecherchePremier(), HlitSuivant() qui lui fonctionnera. Il te reste à traiter les erreurs et les exceptions.
Bon dev,
Philippe |
| |
| |
| | | |
|
| | |
| |
Posté le 07 décembre 2015 - 19:10 |
Je n'arrive pas à utiliser votre exemple Avez vous un code qui fonctionne ? Mon code doit lire une requête sur un fichier Origine d'un Serveur Origine pour copier des enregistrements vers un fichier destination identique d'un autre serveur puis supprimer les enregistrements du fichier origine en vous remerciant |
| |
| |
| | | |
|
| | |
| |
Posté le 09 décembre 2015 - 15:09 |
Bonjour,
Sur quelle version de windev travaillez-vous ?
Philippe |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 197 messages Popularité : +9 (9 votes) |
|
Posté le 09 décembre 2015 - 17:39 |
Exemple pour aller vers des tables de bases Access dont le nom de chaque base est contenu dans une table d'une autre base
sCodAff est une chaine//nom du fichier Access sans son extension .mdb sCHAINECONNEX est une chaîne
sCodAff = //aller lire dans la table source des noms
sCHAINECONNEX = "R:\M\D\F\"+sNomRepDossier+"\"+sCodAff+".mdb"//chaine de point de connexion SI fFichierExiste(sCHAINECONNEX) ALORS bFexiste = Vrai FIN SI bFexiste = Vrai ALORS HDécritConnexion("FACTUREScnx", "", "",sCHAINECONNEX,"",hOledbAccess2000,hOLecture,"")//Connexion sur la BASE.MDB HOuvreConnexion(FACTUREScnx) HChangeConnexion(Table,FACTUREScnx)//connexion sur la table de la BASE.MDB HOuvre(Table) SI HLitPremier(Table) = Vrai ALORS //TOUTES LES DONNEES DE LA TABLE DE LA BASE CONNECTée SONT ACCESSIBLES |
| |
| |
| | | |
|
| | | | |
| | |
|