Récupération élément variable d'une base de données

Frego67 Messages postés 2 Date d'inscription lundi 18 septembre 2023 Statut Membre Dernière intervention 19 septembre 2023 - Modifié le 18 sept. 2023 à 17:01
jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 - 19 sept. 2023 à 16:20

Bonjour à tous et à toutes,

D'avance merci pour l'aide que vous m'apporterez. Je suis débutant en Windev, soyez indulgent svp :)

NomEmploye est une chaîne

export est un xlsdocument = xlsOuvre("C:\Users\mathieu.xxxxx\Documents\testImport.xlsx")
nbligne = xlsNbLigne(export)

//pour toute les lignes du fichierXLS sauf la première (en-tête)
POUR i = 2 A nbligne
	//remise à zéro de la ligne
	HRAZ(SUIVIOP)

	//NomTable.attribut = xlsDonnée(FichierXLS,numéros_ligne,numéro_colonne)
	SUIVIOP.EMCLEUNIK = xlsDonnée(export, i, 8)
	Pcleunik = xlsDonnée(export, i, 8)
	//Récupération de la clé unique pour l'éxécution des requetes SQL
	SUIVIOP.DATEINTER = xlsDonnée(export, i, 7)
	
//	NomEmploye = HExécuteRequêteSQL(reqNomEmpl,Pcleunik)
	NomEmploye = HExécuteRequêteSQL(ReqNom, "SELECT EMPLOYE.NOM FROM EMPLOYE WHERE EMPLOYE.EMCLEUNIK = " + Pcleunik)
	Info(NomEmploye)
	
	SUIVIOP.NOMOP = ReqNomEmpl
//	il faudrait récupérer le nom de l'EMPLOYE EMPLOYE dont le emcleunik est en ligne 11
	SUIVIOP.NUMCOM = xlsDonnée(export, i, 5)
	SUIVIOP.TYPE = "MO"
	SUIVIOP.DOCUMENT = "PROJET"
	SUIVIOP.NBRHEURE = xlsDonnée(export, i, 4)
//	SUIVIOP.COUT_HORAIRE = xlsDonnée(export, i, 9)
	SUIVIOP.DUREE_INTER = xlsDonnée(export, i, 4)
	SUIVIOP.COMMENTAIRE = xlsDonnée(export, i, 6)
//	SUIVIOP.MATRICULE = xlsDonnée(export, i, 10)
	
	//Ajout de la ligne dans la table
	HAjoute(SUIVIOP,hIgnoreDoublon)
	
FIN 

Voici le code que j'ai, j'ai besoin de récupérer dans le "nomemploye" un élément de ma base de données dans la table "EMPLOYE" et le champ est "nom". 

Cette requete se fait en fonction du numéro unique de l'employé que j'inscris en amont dans une variable. 

Problème : La requête me donne 1.

Quelqu'un a une idée ? Dois-je d'abord connecter ma base de données à mon code ? Si oui, j'veux bien un coup de main pour le faire car j'ai déjà essayé en vain...

Merci d'avance pour votre aide !
Windows / Chrome 116.0.0.0

2 réponses

jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
19 sept. 2023 à 06:52

Bonjour

Réflexe numéro 1 à avoir... regarder ce que dit la documentation...

Par. Exemple, tu y aurais lu:

Attention : Pour se positionner sur le premier enregistrement du résultat de la requête, utilisez par exemple la fonction HLitPremier.


0
Frego67 Messages postés 2 Date d'inscription lundi 18 septembre 2023 Statut Membre Dernière intervention 19 septembre 2023
19 sept. 2023 à 15:23

Bonjour et merci pour votre retour @jordane45.

Je regrette mais je ne comprends pas comment fonctionne cette fonction.

"Positionne sur le premier enregistrement d'un fichier de données en fonction d'une rubrique de parcours. L'enregistrement est lu et les variables HFSQL (par exemple Client.Nom, c'est-à-dire la rubrique Nom du fichier Client) sont mises à jour."

En effet, je suppose que ma requête SQL ne devrait sortir qu'une seule valeur, puisque je ne demande qu'un seul champ et qu'une seule occurence puisque je cible une clé unique.

Mea culpa , si je ne me fais pas bien comprendre ou je m'exprime mal , n'ayant pas le vocabulaire technique, je me doute que ça ne doit pas être évident.

J'ai donc essayé la syntaxe suivante :

HLitPremier("SELECT EMPLOYE.NOM FROM EMPLOYE WHERE EMPLOYE.EMCLEUNIK = " + Pcleunik)

L'erreur est la suivante :

La source de données <SELECT EMPLOYE.NOM FROM EMPLOYE WHERE EMPLOYE.EMCLEUNIK = 46> n'est pas initialisée.

0
jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
19 sept. 2023 à 16:20

Regarde la doc..  tu as des exemples je pense...

Quoi qu'il en soit, tu executes la requête puis après ..il faut lire le résultat avec la fonction que je t'ai donné 

0