OVH Cloud OVH Cloud

Requete SQL ou hLitRecherche ??

2 réponses
Avatar
JVMD
Je me pose la question.

Je veux tout simplement sélectionner un enregistrement dans une table
mais ce sans perdre la position en cours.

Donc deux solutions à priori.

Soit :

maRequete est une source de données
hExecuteRequeteSQL (maRequete, "SELECT * FROM MaTable WHERE IDtoto =
'2'")
Reponse = maRequete.Donnee


Soit :

Position est un entier
Position = HSauvePosition(maTable)
HLitRecherche(maTable, IDToto, 2)
Reponse = maTable.Donnee
HRetourPosition(Position)


Quel est la meilleur solution.

Personnellement j'ai une préférence pour la solution de la requete.

Mais bon, peut-être n'est-ce pas la meilleur solution.

Pourriez-vous m'éclairer sur ce sujet.

JL


----------------------------------------------
Enlever AntiSpam à mon adresse pour m'écrire.
----------------------------------------------

2 réponses

Avatar
ted
Salut,

c'est effectivement comme tu préfères.
Lais il y a encore au moins une autre solution : l'alias.

1 - Tu déclares une variable de type "sources de données"
2 - Tu crés un alias avec HAlias (un double logique de ton fichier) sur ton
fichier vers la variable source de données
3 - Tu fais pointer l'alias sur le même fichier physiquement : HChangeRep +
HChangeNom
Note : Si tu dois utiliser ce "double" dans plusieurs code de ton appli,
fait le en global au projet
4 - Pour la recherche tu utilise ton alias !

5 - Quand tu n'a plus besoins de l'alias de le libère avec HAnnuleAlias

Exp.:
//----En global au projet ou au debut du code
GLOBAL
Client2 est une sources de données

//Création de l'alias
SI PAS Halias("Client2","Client") ALORS
Erreur(HerreurInfo())
FIN

HChangeNom(Client2,Client..NomPhysique)
HChangeRep(Client2,Client..Repertoire)

//---Dans le code où tu as besoins de ce "double" (ici boucle sur client)

HLitPremier(Client,IdClient)
TantQue pas Hendehors(Client)
HLitRecherche(Client2,Cle,Valeur) //<- Recherche sur l'alias
Si HTrouve(Client2) ALORS
//Code perso...
FIN
HLitSuivant(Client,IdClient)
Fin



//--- En Fin de projet ou à la fin du code
HannuleAlias(Client2)


--
En esperant t'avoir aidé.
ted
Avatar
JVMD
Le 10 Sep 2004 20:23:54 GMT, ted écris :


c'est effectivement comme tu préfères.
Lais il y a encore au moins une autre solution : l'alias.



Très interressant !

Je n'utilise pas encore toute la syntaxe Windev qui est tout de même
très riche et je n'avais pas saisi toute l'utilitée de cette commande.

Donc si j'ai bien compris, l'alias permet de manipuler un fichier
d'une façon indépendante pour toute manip, requête. etc ...

Super !

Je vais tester ça, ça m'ouvre des horizons sur certains problème d'un
autre type.

Merci bcp pour cette piste.

JL


----------------------------------------------
Enlever AntiSpam à mon adresse pour m'écrire.
----------------------------------------------