1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
| HSurErreur("*",hErrTout,"")
cnxTblSQL est une Connexion
//Ouverture connexion SQL Server
SI PAS RedefCnx(cnxTblSQL) ALORS
RETOUR
FIN
bTransactOuverte est un booléen
sListeFic est une chaîne
sFicHF est une chaîne
sFicSQL est une chaîne
nIndFic est un entier
sReq est une chaîne
rsSupp est une Source de Données
DélaiAvantFermeture(500)
SI EnModeTest() ALORS
sListeFic = [
ART_FICHE_TECH
]
SINON
//Extraction de la liste des tables à migrer.
sListeFic = fChargeTexte(ComplèteRep(fRepExe()) + "ListeTable.txt")
FIN
//Ouverture connexion BDD de prod
SetCnxSource(SEL_BDD)
nIndFic = 1
sFicHF = ExtraitChaîne(sListeFic,nIndFic,RC)
TANTQUE sFicHF <> EOT
QUAND EXCEPTION DANS
MaFenêtre..Titre = "Transfert : " + sFicHF
MultitâcheRepeint()
SI PAS HChangeConnexion({sFicHF,indFichier},WINMAT_BDD) ALORS
ExceptionDéclenche(1,HErreurInfo(hErrComplet))
FIN
//Création des alias des tables à injecter.
sFicSQL = sFicHF + "_SQL"
SI PAS HAlias(sFicHF, sFicSQL) ALORS
ExceptionDéclenche(1,HErreurInfo(hErrComplet))
FIN
SI PAS HChangeConnexion(sFicSQL,cnxTblSQL)
ExceptionDéclenche(1,HErreurInfo(hErrComplet))
FIN
SI PAS HChangeNom(sFicSQL,sFicHF)
ExceptionDéclenche(1,HErreurInfo(hErrComplet))
FIN
//Utile si la structure n existe pas dans la base de destination.
SI PAS HCréationSiInexistant(sFicSQL)
ExceptionDéclenche(1,HErreurInfo(hErrComplet))
FIN
HLitPremier(sFicHF)
SQLTransaction(sqlDébut, cnxTblSQL)
bTransactOuverte = Vrai
SI HNbEnr(sFicSQL) = 0 OU INT_InjecterTblNonVides = Vrai ALORS
//Si la table de destination est potentiellement non vide, on supprimer tous les enregistrements.
SI INT_InjecterTblNonVides ALORS
SI PAS HExécuteRequêteSQL(rsSupp,cnxTblSQL,hRequêteSansCorrection,"TRUNCATE TABLE " + sFicHF) ALORS
ExceptionDéclenche(1,HErreurInfo(hErrComplet))
FIN
FIN
ChronoDébut()
//Copie de tous les enregistrements du fichier.
TANTQUE PAS HEnDehors(sFicHF)
SI PAS HCopieEnreg(sFicSQL,sFicHF,hCopieIdAuto) ALORS
TraceLog(HErreurInfo(hErrComplet), sFicHF)
FIN
SI PAS HAjoute(sFicSQL,hFixeIdAuto) ALORS
TraceLog(HErreurInfo(hErrComplet), sFicHF)
FIN
HLitSuivant(sFicHF)
FIN
Trace(sFicHF + "-" + ChronoFin() + "-" + HNbEnr(sFicSQL))
FIN
SQLTransaction(sqlFin, cnxTblSQL)
bTransactOuverte = Faux
HAnnuleAlias(sFicSQL)
FAIRE
erreur(ExceptionInfo(), sFicHF)
ExceptionActive()
SI bTransactOuverte ALORS
SQLTransaction(sqlAnnule, cnxTblSQL)
bTransactOuverte = Faux
FIN
Trace(sFicHF + "-Erreur")
FIN
nIndFic++
sFicHF = ExtraitChaîne(sListeFic,nIndFic,RC)
FIN |
Partager