PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV Mobile (versiones precedentes) → Procedure stockée et passage de paramètre
Procedure stockée et passage de paramètre
Iniciado por DEKPON Renaud Silvèr, 26,sep. 2020 16:12 - 1 respuesta
Miembro registrado
5 mensajes
Publicado el 26,septiembre 2020 - 16:12
Bonjour, j'utilise les procedures stockées sur windev mobile 23 actuellement. Jusque là je n'ai pas vraiment eu de difficulté a passe les paramètres et a récupérer les résultats.
Seulement depuis hier je cale sur un bugg, car oui je ne pense pas que ce soit lié à mon code.
Dans le code d'initialisation de mon projet, il y a une procédure stockée denommee init_tables qui reçoit une chaine de caractères en paramètre.
Il fonctionnait sans pb. Hier j'ai essayé de le bidouiller pour qu'il puisse me servir a autre chose. Jai commencé par avoir des erreurs de type "Dans le cadre dun passage par référence, un element de type XX ne peut être converti vers le type YYY". Fatigué j'ai fini par abandonner l'idée et ramener la procédure a son etat normal c'est à dire qu'il reçoit de nouveau un seul parametre de type chaine de caractère que je lui fourni.
Mais à l'exécution la même erreur continue d'apparaitre et me dit de manière spécifique qu'un élément de type entier sur 8 octets ne peut être converti vers le type date alors que ni ma procedure stockée ni le code appelant n'utilisent de variable de type date ou entier sur 8 octets. J'ai recompilé le projet, rparé, supprimé et redéclaré les variables sans succès. Je ne sais plus quoi faire. Des idées?

Code appelant la procédure :
sId est un chaîne=SysIMEI("")

SI sId="" ALORS//Android 10 et superieur
SI HNbRec(settinglocal)=0 ALORS//On a pas encore créé d'id
sId=GénèreMotDePasse(15)
settinglocal.idgenere=sId
HAjoute(settinglocal)
SINON//on en a déjà généré
HLitPremier(settinglocal)
sId=settinglocal.idgenere
FIN
FIN

sRes est une chaîne=""
// sres=HExécuteProcédure(MaConnexion1,init_all_tables,UnicodeVersAnsi(sid))//crée toutes les tables
sRes=HExecuteProcedure(MaConnexion1,init_all_tables,UnicodeVersAnsi(sId))



Code de ma procedure stockée :
Procedure init_all_tables(Sadressemac est un chaîne)
D1,d2 sont des Dates
D1=DateSys()
d2=D1..Jour+1
//DDATE EST UNE DATE=ChaîneVersDate(sDa,"JJ/MM/AAAA")
HCréationSiInexistant("*")
//Today
HExécuteRequête(REQ_verifie_exec_tache_planifiee,hRequêteDéfaut,D1)
SI HNbRec(REQ_verifie_exec_tache_planifiee)=0 ALORS//C'est le premier lancement de la journée. On crée les tâches
declenche_creation_des_taches_journalieres(D1)
FIN
//Demain
HExécuteRequête(REQ_verifie_exec_tache_planifiee,hRequêteDéfaut,d2)
SI HNbRec(REQ_verifie_exec_tache_planifiee)=0 ALORS//C'est le premier lancement de la journée. On crée les tâches
declenche_creation_des_taches_journalieres(d2)
FIN
RENVOYER VERIFIE_premier_demarrage()+RC+verifie_adresse_mac(Sadressemac)
Miembro registrado
5 mensajes
Publicado el 27,septiembre 2020 - 10:10
Honte de le dire, le problème était finalement a mon niveau. Dans le code de la procédure stockée. ligne
D2=D1..jour+1
Apparemment ce type d'incrémentation n'est pas encore disponible en procédure stockée.

Mais après PC soft aurait pu trouver un meilleur moyen de formuler cette erreur plutôt que de faire croire que l'erreur était au niveau du passage de paramètres.