PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → [WM17] Identifiant sur Insert
[WM17] Identifiant sur Insert
Débuté par Jahwa, 17 mai 2012 20:54 - 6 réponses
Membre enregistré
54 messages
Posté le 17 mai 2012 - 20:54
Hello,

Peut-on récupérer automatiquement l'identifiant automatique créer lors d'un Insert par requête enregistrée.

Par exemple dans le genre:
ID = HExécuteRequête(REQ_InsertClient,hRequêteDéfaut,ParamNom, ParamPrenom,Param...)

Existe-t-il une fonction qui fasse cela, ou faut-il rechercher l'ID manuellement ?

Merci de vos réponses
Cordialement
Membre enregistré
54 messages
Posté le 23 mai 2012 - 15:37
coucou,

pas trop d'idées ? ;-)

faut-il passer par un "select max(id) from client" ?

c'est pas le top s'il y a plusieurs saisies simultanées
Posté le 23 mai 2012 - 18:31
Jahwa a formulé ce vendredi :
Hello,

Peut-on récupérer automatiquement l'identifiant automatique créer lors d'un
Insert par requête enregistrée.

Par exemple dans le genre:
ID = HExécuteRequête(REQ_InsertClient,hRequêteDéfaut,ParamNom,
ParamPrenom,Param...)

Existe-t-il une fonction qui fasse cela, ou faut-il rechercher l'ID
manuellement ?

Merci de vos réponses
Cordialement


LAST_INSERT_ID

--
Cordialement JeAn-PhI
Membre enregistré
54 messages
Posté le 24 mai 2012 - 11:10
ok merci JeAn-PhI

ça doit être cela, et c'est dans la liste des commandes sql disponibles avec la commande HExecuteRequeteSql. J'ai vu ça dans le manuel des Etats & Requêtes de Windev.

... bon 'suffit de la mettre en oeuvre ;-)

je vous tiens au courant
Membre enregistré
54 messages
Posté le 25 mai 2012 - 12:39
bon , je n'arrive pas à executer la requete, je la code comme cela:

SRequete est une chaîne
ResSQL est Source de Données

sRequete= "LAST_INSERT_ID()"
SI HExécuteRequêteSQL(ResSQL,sRequete) = Faux ALORS
Erreur("Erreur HyperFileSQL : " + HErreurInfo())
RETOUR
FIN

ça me renvoi: "Mot Inattendu"
J'ai essayé , avec le même résultat
"LAST_INSERT_ID"
"last_insert_id"
"last_insert_id()"
"Select LAST_INSERT_ID() as lastId from Depenses"

Si vous avez des idées ... même une seule ! ;-)
Posté le 25 mai 2012 - 17:04
Jahwa avait écrit le 25/05/2012 :
bon , je n'arrive pas à executer la requete, je la code comme cela:

SRequete est une chaîne
ResSQL est Source de Données

sRequete= "LAST_INSERT_ID()"
SI HExécuteRequêteSQL(ResSQL,sRequete) = Faux ALORS
Erreur("Erreur HyperFileSQL : " + HErreurInfo())
RETOUR
FIN

ça me renvoi: "Mot Inattendu"
J'ai essayé , avec le même résultat
"LAST_INSERT_ID"
"last_insert_id"
"last_insert_id()"
"Select LAST_INSERT_ID() as lastId from Depenses"

Si vous avez des idées ... même une seule ! ;-)


en SQL il faut faire

"insert into matable set macol=maval, macol2=maval2"

et de suite après :

"select last_insert_id()"

l'idéal est de le faire dans une transaction

mais je ne sais pas si HF supporte cette fonction !

--
Cordialement JeAn-PhI
Membre enregistré
54 messages
Posté le 25 mai 2012 - 18:11
J'ai essayé :

=====================================
sMaRequeteINSERT,sMaRequeteID est une chaîne
sdResultInsert,sdResultID est Source de Données


sMaRequeteINSERT = "INSERT INTO Depenses(Colocataire,Montant,DateDepense,ObjetDep) VALUES ( 'Jacky','121', '20120501','Achat Lidl')"
sMaRequeteID = "select last_insert_id()"

SI HExécuteRequêteSQL(sdResultInsert,sMaRequeteINSERT) = Faux ALORS
Erreur("Erreur HyperFileSQL : " + HErreurInfo())
RETOUR
FIN


SI HExécuteRequêteSQL(sdResultID,sMaRequeteID) = Faux ALORS
Erreur("Erreur HyperFileSQL : " + HErreurInfo())
RETOUR
FIN
===========================================================

mais toujours un retour "Mot inattendu"

Bon, pour le moment je développe sur une tablette en mono-poste, mais l'application est destinée à du multi-post client-serveur, c'est pour ça qu'un simple "max(id) from client" n'est pas satisfaisant !

Je continue à chercher ... merci encore Jean-Phi