Accueil > FAQ > WinDev Codes HF FAQ
 Résumé de la catégorie
Voici les informations en lien avec cette catégorie.
Catégorie Q&R Dernières Q&R publiées
 WinDev Codes HF
Q/R relatives aux ordres HyperFile du wLangage.
7 Comment affecter, modifier et supprimer le contenu d'un champ mémo bimair...

 
Demandé et répondu par R&B le 12-Jul-2005 17:29 (5183 Lectures)
Comment affecter, modifier et supprimer le contenu d'un champ mémo bimaire ?
Les fichiers attachés aux mémos binaires sont une surcouche de la gestion des rubrique. Ainsi, les fonction EcranVersFichier() et FichierVersEcran() sont à compléter avec respectivement par HAttacheMemo() et hExtraitMemo().

La suppression du contenu d'un mémo binaire est assurée par l'attachement d'une chaine vide (à la place du chemin de fichier).


Demandé et répondu par R&B le 27-Sep-2004 12:14 (2092 Lectures)
Cacher et récupérer des enregistrements.
Il peut s'avérer utile de 'cacher' des enregistrements pour effecteur un traitement et les récupérer ensuite.

- Remplir un tableau (dynamique) avec les n° des enregistrement à cacher.
ndim est un entier
tEnr est un tableau de 0 entiers sur 8 octets
ndim=Dimension(tEnr,Dimension(rEnr)+1)
tEnr[ndim]=HNumEnr(FICHIER)


- Utiliser hRaye() pour les enlever des parcours du traitement.

POUR i= 1 A ndim
   HRaye(FICHIER,tEnr[i],hIgnoreIntégrité)
FIN


- Lancer le traitement, les enregistrement rayés ne sont plus lisible

- Récupérer les enregistrements par lecture et modification.
POUR i= 1 A ndim
   HLit(FICHIER,tEnr[i])
   HModifie(FICHIER,tEnr[i],hIgnoreIntégrité)
FIN


Hop : les enregistrements sont à nouveau là : magique !

NB :
- il faut veiller à ne pas quitter le traitement avant récupération des enregistrement ou bien alors se prémunir d'un mécanisme de sauvegarde/ restauration du fichier.
- Il faut aussi veiller à se prémunir d'un réindexation avec compactage du fichier pendant la durée du traitement sous peine de perdre les informations.

A utiliser de préférence avec des fichier temporaires donc.


Demandé et répondu par R&B le 27-Sep-2004 12:14 (3376 Lectures)
Afficher les composantes des clés composées
Les clés composées sont désormais disponibles sous forme de chaines via HconstruitValClé() qui simplifie grandement la gestion des clés composées.

Reste que les valeurs sont complétées par hValMin (ou hValMax).
hValMin est le caractère 0 de la table ascii, lequel correspond aussi en C/C++ (language dans lequel est créé WinDev) au caractère de fin de chaine.
Ainsi le code suivant
cCle est une chaine = HConstruiValCle(Fichier,Cle,val1,val2...)
info(cVal)

...ne retourne que la valeur de le première partie de la clé. info interprète le premier cacactère hValMin comme la fin de la chaine.

Pour résoudre ce problème, il faut simplement remplacer les caractère hValMin par des caractères affichables (un expace par exemple), ce qui donne :
cCle est une chaine = HConstruiValCle(Fichier,Cle,val1,val2...)
info(remplace(cVal,hvalmin,' ')


Demandé et répondu par R&B le 27-Sep-2004 12:14 (5956 Lectures)
SQL INSERT : connaître le dernier ID auto. (HF et MySQL)
FAQ aimablement soumise par KPiTN :

Récupérer le dernier identifiant inséré

BDD Hyperfile :
ReqNav est une source de donnée
HExécuteRequêteSQL(ReqNav,'Insert Into Navires (LibNavire) Values (' + TxtNavire + ')')
DernierIdentifiant=ReqNav.idnavire


BDD Mysql :
ReqNav est une source de donnée
HExécuteRequêteSQL(ReqNav,'ConnectSQL',hRequêteSansCorrection,'insert into navires (libnavire) values ('' + TxtNavire+ '')')
HExécuteRequêteSQL(ReqNav,'ConnectSQL',hRequêteSansCorrection,Minuscule('SELECT LAST_INSERT_ID() as idnavire'))
HLitPremier(ReqNav)
DernierIdentifiant=ReqNav.idnavire


Demandé et répondu par Thernius le 27-Sep-2004 12:14 (3030 Lectures)
Pourquoi une concaténation dans une requête SQL ne fonctionne pas?
Voici le morceau de code qui ne fonctionne pas :

...RIGHT(OPERATION.DATE,2)+"/"+MID(OPERATION.DATE,5,2)+"/"+MID(OPERATION.DATE,3,2) AS DATEAFF...


La solution est donnée par DrCharly, la voici :

...RIGHT(OPERATION.DATE,2)+'/'+MID(OPERATION.DATE,5,2)+'/'+MID(OPERATION.DATE,3,2) AS DATEAFF...


Dans le code de la requête, il suffit de ne pas mettre de guillemets ("), mais tout simplement les remplacer par des quotes simples (').


Demandé et répondu par Thernius le 27-Sep-2004 12:14 (4567 Lectures)
Comment supprimer rapidement un fichier HF par programmation ?
A l'heure actuelle, il n'existe pas de commande permettant de supprimer directement le contenu entier d'un fichier HF. Alors comment faire pour supprimer tout le contenu d'un tel ficher, surtout lorsque celui ci contient des milliers et à fortiori des millions d'enregistrements.

Un parcours un par un des enregistrement couplé à la fonction HSupprime est à proscrire pour des problèmes évidents de temps d'exécution.

Une méthode bien plus rapide et propre consiste à utiliser le code suivant :

HFerme(<fichier>)
FSupprime(<fichier>.fic)
FSupprime(<fichier>.ndx)
HCreationSiInexistant(<fichier>)


Ce code marchera très bien pour une application monoposte, il est conseillé par contre de prendre des précautions dans le cas d'une application réseau. Il serait bon au préalable de vérifier la présence d'utilisateur connecté et éventuellement de prévoir un code leur demandant de quitter l'application (avec un timer à 60 secondes par exemple qui exécute automatiquement l'action au bout du délai).


Demandé et répondu par R&B le 27-Sep-2004 12:14 (5533 Lectures)
Transferer le contenu d'un fichier HyperFile (F1) vers un autre (F2)
Mieux que le hcopieEnreg, voici une solution pour transférer rapidement le contenu d'un fichier HyperFile (F1) dans un autre (F2) de même structure, hors contrôles HyperFile évidemment.

cR = hlisterubrique(F1)
eF = fOuvre(cF, foCréation+foLectureEcriture)
HLitPremier(F1,C1)TANTQUE PAS HEnDehors(F1)
fEcritLigne(efic,HRécupèreEnregistrement(F1)) HLitSuivant(F1,C1)
FIN
fFerme(eF)
HImporteTexte(F2,cF,cR,TAB + Caract(127) + """" + Caract(127) + RC,hImpSansDélimiteur)
fSupprime(cF)


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2