Bonjour à toutes et tous,
Je vous explique en quelques lignes l'application Android servant à remonter les rapports d'activité de salariés sur chantier.
1) fenêtre de connexion 2) fenêtre de choix de client selon s'il a un chantier en cours 3) fenêtre du choix du chantier de ce client (en fait un chantier se découpe en parcelles donc forcément il y en a plusieurs)
Maintenant un aperçu rapide du code.
Connexion - champ login et password, si identification vérifiée j'envoie en paramètre l'ID du salarié aux fenêtres suivantes
Choix client (tout le code est placé dans la fin d'initialisation de la fenêtre pour éviter un chargement de l'ihm dans le désordre).
Initialisation PROCÉDURE MaFenêtre(sIDSalarie est un entier)
Fin d'initialisation sCodeSQL est une chaîne = " SELECT DISTINCT chantier.Client AS Client FROM statutchantier, chantier WHERE chantier.IDStatutChantier = statutchantier.IDStatutChantier AND (statutchantier.Description = 'En cours') AND chantier.DateDebut <= GETDATE()" ReqClient est une Source de Données // Initialisation de la requête "Client" HExécuteRequêteSQL(ReqClient, sCodeSQL) HLitPremier(ReqClient) TANTQUE PAS HEnDehors(ReqClient) ListeAjoute(COMBO_Client, ReqClient.Client + gLien(ReqClient.Client)) HLitSuivant(ReqClient) FIN
Clic sur bouton Valider
OuvreFenêtreMobile(FEN_Chantier,sIDSalarie,COMBO_Client..ValeurMémorisée)
Donc on passe à la fenêtre Choix chantier dont voici le code très similaire
Initialisation PROCÉDURE MaFenêtre(LOCAL sIDSalarie est un entier,LOCAL sClient est une chaîne)
Fin d'initialisation sCodeSQL est une chaîne = "SELECT chantier.IDchantier, chantier.CodeChantier, chantier.IDStatutChantier, chantier.DateDebut, statutchantier.IDStatutChantier, statutchantier.Description FROM statutchantier, chantier WHERE chantier.IDStatutChantier = statutchantier.IDStatutChantier AND (statutchantier.Description = 'En cours') AND chantier.DateDebut <= GETDATE() AND (chantier.Client = {Param1})" ReqChantier est une Source de Données // Initialisation de la requête "Client" ReqChantier.Param1 = sClient HExécuteRequêteSQL(ReqChantier, sCodeSQL) HLitPremier(ReqChantier) TANTQUE PAS HEnDehors(ReqChantier) ListeAjoute(COMBO_Chantier, ReqChantier.CodeChantier + gLien(ReqChantier.IDchantier)) HLitSuivant(ReqChantier) FIN
Et là j'ai un cas critique. Tout marche dans l'émulateur. Mais sur un device Android, j'ai cette erreur :
Message=Le fichier, la vue ou la requête 'ReqChantier' n'est pas connu. Fonction WLangage=OuvreFille Traitement=Initialisation de FEN_Chantier.COMBO_Chantier Pile WLangage=Initialisation de FEN_Chantier.COMBO_Chantier Clic gauche sur FEN_Client.BTN_Valider Pile Java=fr.pcsoft.wdjava.core.erreur.WDErreurManager.a(Unknown Source) fr.pcsoft.wdjava.core.erreur.WDErreurManager.a(Unknown Source) fr.pcsoft.wdjava.core.types.database.WDSourceDonnees.getSourceDonnees(Unknown Source) fr.pcsoft.wdjava.core.types.database.WDSourceDonnees.getElement(Unknown Source) fr.pcsoft.wdjava.core.WDObjet.get(Unknown Source) fr.amp09.amp_mobile.wdgen.GWDFFEN_Chantier$GWDCOMBO_Chantier.init(GWDFFEN_Chantier.java:149) fr.pcsoft.wdjava.ui.q.executerPCode(Unknown Source) fr.pcsoft.wdjava.ui.champs.rb.executerPCode(Unknown Source) fr.pcsoft.wdjava.ui.q.appelPCode(Unknown Source) fr.pcsoft.wdjava.ui.champs.qb.appelPCode(Unknown Source) fr.pcsoft.wdjava.ui.champs.kb.j(Unknown Source) fr.pcsoft.wdjava.ui.champs.fenetre.WDFenetre.activity_onCreate(Unknown Source) fr.pcsoft.wdjava.ui.activite.h.run(Unknown Source) android.os.Handler.handleCallback(Handler.java:751) android.os.Handler.dispatchMessage(Handler.java:95) fr.pcsoft.wdjava.core.g.r.a(Unknown Source) fr.pcsoft.wdjava.ui.champs.fenetre.WDFenetre.ouvre(Unknown Source) fr.pcsoft.wdjava.ui.champs.fenetre.l.ouvre(Unknown Source) fr.pcsoft.wdjava.ui.champs.fenetre.l.ouvrirFenetre(Unknown Source) fr.pcsoft.wdjava.api.WDAPIFenetre_Commun.ouvreFille(Unknown Source) fr.amp09.amp_mobile.wdgen.GWDFFEN_Client$GWDBTN_Valider.clicSurBoutonGauche(GWDFFEN_Client.java:279) fr.pcsoft.wdjava.ui.q.executerPCode(Unknown Source) fr.pcsoft.wdjava.ui.champs.rb.executerPCode(Unknown Source) fr.pcsoft.wdjava.ui.q.appelPCode(Unknown Source) fr.pcsoft.wdjava.ui.champs.qb.appelPCode(Unknown Source) fr.pcsoft.wdjava.ui.q.appelPCode_TLM(Unknown Source) fr.pcsoft.wdjava.ui.champs.bouton.d.onClick(Unknown Source) android.view.View.performClick(View.java:5637) android.view.View$PerformClick.run(View.java:22433) android.os.Handler.handleCallback(Handler.java:751) android.os.Handler.dispatchMessage(Handler.java:95) android.os.Looper.loop(Looper.java:154) android.app.ActivityThread.main(ActivityThread.java:6186) java.lang.reflect.Method.invoke(Native Method) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) Thread=id=1 name=main priority=5 groupName=main
Je ne comprends pourquoi ma première source de données (fenêtre client) ne pose aucun problème alors que la seconde (fenêtre chantier) oui. La seule différence étant le paramètre il me semble.
Si quelqu'un peut m'éclairer sur ce qu'il se passe je vous remercie.
Cordialement, |