PROCEDURE Recup_Fichier(NomFichier)
// Déclaration et initialisation des variables
NomCheminFichier est une chaîne = NomFichier+".txt"
IdFichier est un entier
ResEcrit est un booléen = Vrai
ResFermeFichier,nNbEnr est un entier
sLesRubs,sMaRub,sMaLig sont des chaînes
sLesRubs=HListeRubrique(NomFichier)
// Ouverture du fichier
fRepCrée(ComplèteRep(ComplèteRep(fRepExe())+"Sauvegarde "+DateSys()))
IdFichier = fOuvre(ComplèteRep(ComplèteRep(fRepExe())+"Sauvegarde "+DateSys())+NomCheminFichier, foCréation+foEcriture)
// Affichage du message d'erreur si l'ouverture n'a pas été effectuée
SI IdFichier = -1 ALORS
Erreur(ErreurInfo(errMessage))
RETOUR
FIN
// Lecture du premier enregistrement
HLitPremier(NomFichier)
// Autres enregistrements à lire ? Erreur d'écriture ?
TANTQUE HEnDehors = Faux ET ResEcrit = Vrai
nNbEnr++
LIB_Detail=nNbEnr+" enregistrements traités"
// Écriture des enregistrements ligne par ligne dans le fichier texte
sMaLig=""
sMaRub = ExtraitChaîne(sLesRubs, rangPremier, RC)
TANTQUE sMaRub <> EOT
SI sMaLig<>"" ALORS sMaLig+=TAB
sMaLig+={NomFichier+"."+sMaRub,indRubrique}
sMaRub = ExtraitChaîne(sLesRubs, rangSuivant, RC)
FIN
ResEcrit = fEcritLigne(IdFichier, sMaLig)
// Lecture des enregistrements suivants
HLitSuivant(NomFichier)
FIN
// Affichage du message d'erreur si l'écriture n'a pas été effectuée
SI PAS ResEcrit ALORS Erreur(ErreurInfo(errMessage))
// Fermeture du fichier
ResFermeFichier=fFerme(IdFichier)
SI ResFermeFichier = -1 ALORS
// Affichage du message d'erreur si la fermeture n'a pas été effectuée
Erreur(ErreurInfo(errMessage))
FIN
PROCEDURE Restaure_Fichier(NomFichier,sMonRep)
// Déclaration et initialisation des variables
NomCheminFichier est une chaîne = NomFichier+".txt"
IdFichier est un entier
ResEcrit est un booléen = Vrai
ResFermeFichier,nNbEnr,nNumRub est un entier
sLesRubs,sMaRub,LigneLue,sValRub sont des chaînes
tabRub,tabValeur sont des tableaux de 0 chaînes
sLesRubs=HListeRubrique(NomFichier,hLstDétail )
dh est une chaîne=GetDateHeure(DateSys()+HeureSys())
sdReqDel est une Source de Données
SI PAS HExécuteRequêteSQL(sdReqDel,nom_connection,ModeDataUpdate,"DELETE FROM "+NomFichier) ALORS
Erreur(HErreurInfo())
RETOUR
FIN
HAnnuleDéclaration(sdReqDel)
// Ouverture du fichier
IdFichier = fOuvre(ComplèteRep(sMonRep)+NomCheminFichier, foLecture)
// Affichage du message d'erreur si l'ouverture n'a pas été effectuée
SI IdFichier = -1 ALORS
Erreur(ErreurInfo(errMessage))
RETOUR
FIN
LigneLue = fLitLigne(IdFichier)
// Autres lignes à lire ? Erreur de lecture ?
TANTQUE LigneLue <> EOT ET LigneLue <> ""
nNbEnr++
LIB_Detail=nNbEnr+" enregistrements traités"
// Lecture des rubriques une par une
nNumRub=0
tabRub=allouer tableau de 0 chaînes
tabValeur=allouer tableau de 0 chaînes
sMaRub = ExtraitChaîne(sLesRubs, rangPremier, RC)
TANTQUE sMaRub <> EOT
nNumRub++
sValRub=ExtraitChaîne(LigneLue,nNumRub)
SI sValRub<>"" ALORS
SI ExtraitChaîne(sMaRub,2)="T" ALORS
SI Position(ExtraitChaîne(sMaRub,1),"date",0,SansCasse)>0 OU Position(ExtraitChaîne(sMaRub,1),"duree",0,SansCasse)>0 OU Position(ExtraitChaîne(sMaRub,1),"heure",0,SansCasse)>0 ALORS
SI Majuscule(sValRub)="DATEMODIF" ALORS
sValRub=dh
SINON
SI Val(sValRub)=0 ALORS
sMaRub = ExtraitChaîne(sLesRubs, rangSuivant, RC)
CONTINUER
FIN
sValRub=GetDateHeure(sValRub)
FIN
SINON
sValRub="'"+sValRub+"'"
FIN
FIN
TableauAjoute(tabRub,ExtraitChaîne(sMaRub,1))
TableauAjoute(tabValeur,sValRub)
FIN
sMaRub = ExtraitChaîne(sLesRubs, rangSuivant, RC)
FIN
SI Dimension(tabRub)=Dimension(tabValeur) ALORS
Insert_Fichier(NomFichier,tabRub,tabValeur)
FIN
// Lecture des lignes suivantes du fichier
LigneLue = fLitLigne(IdFichier)
FIN
// Affichage du message d'erreur si l'écriture n'a pas été effectuée
SI PAS ResEcrit ALORS Erreur(ErreurInfo(errMessage))
// Fermeture du fichier
ResFermeFichier=fFerme(IdFichier)
SI ResFermeFichier = -1 ALORS
// Affichage du message d'erreur si la fermeture n'a pas été effectuée
Erreur(ErreurInfo(errMessage))
FIN
PROCEDURE Insert_Fichier(NomFichier,tabRubriques,tabValeurs)
sdReqInsert est une Source de Données
SQLCh est une chaîne
nNbDim est un entier
nNumDim est un entier
SQLCh="INSERT INTO "+NomFichier+" ("
nNbDim=Dimension(tabRubriques)
SI PAS nNbDim>0 ALORS RETOUR
POUR nNumDim=1 A nNbDim
SQLCh+=tabRubriques[nNumDim]
SI nNumDim<nNbDim ALORS SQLCh+=","
FIN
SQLCh+=") VALUES ("
nNbDim=Dimension(tabValeurs)
SI PAS nNbDim>0 ALORS RETOUR
POUR nNumDim=1 A nNbDim
SQLCh+=tabValeurs[nNumDim]
SI nNumDim<nNbDim ALORS SQLCh+=","
FIN
SQLCh+=")"
SI PAS HExécuteRequêteSQL(sdReqInsert,nom_connection,ModeDataUpdate,SQLCh) ALORS
Erreur(HErreurInfo())
RETOUR
FIN
HAnnuleDéclaration(sdReqInsert)
Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=19&topic_id=6067&post_id=24368