FORUMS PROFESSIONNELS
WINDEV
,
WEBDEV
et
WINDEV Mobile
Accueil
|
Messages récents
|
Connexion
|
Déconnexion
|
Français
Accueil
→
WINDEV Mobile 2024
→
Modification d'une source de donnés par référence ? Passage d'un paramètre par adresse ?
Modification d'une source de donnés par référence ? Passage d'un paramètre par adresse ?
Débuté par Maxime BOUILLON, 23 juin 2017 14:17 - 2 réponses
Connectez-vous…
Maxime BOUILLON
#1
Posté le 23 juin 2017 - 14:17
Bonjour à tous,
Voici mon problème, je suis en-train de développer une application mobile Android communiquant avec une base de données SQLite sur le terminal, j'ai intégré toute la partie communication SQL dans un composant interne car je la réutilise dans d'autres projets et je gère l'ihm est son comportement dans le projet original.
Après avoir tout développé et testé avec l'émulateur fourni par windev, je déploie sur Android et paf au lancement plantage de l'application, erreur : "Dans le cas d'un passage de paramètre par adresse, un élément de type source de données ne peut être converti vers le type chaine. Utilisez un paramètre local dans la procédure appelée ou passez un paramètre de type chaine"
J'en déduis que sur l'émulateur Windev on peut modifier une source de données par référence et pas en exécution sur Android.
Auriez vous une idée/une solution/un contournement au problème ?
Voici un morceau de code qui utilise cette architecture la :
Classe RequeteStores
//Mode communication sert a savoir si je suis en mode nomade (BaseSQLITE) ou en mode connecté (Appels HTTP)
Procedure
PUBLIQUE getStores
(
modeCommunication
est un booléen
) :
tableau de
StoreObject dynamique
tableauStores
est un tableau de
StoreObject dynamique
SI
(
modeCommunication
)
ALORS
mSD
est une Source de
de Données
//Ca plante ici
mSQL.executeRequete
(
REQUETE_GET_STORES
,
mSD
)
POUR
TOUT
mSD
monIterateur
est un
StoreObject
monIterateur.sdConverter
(
mSD
)
TableauAjoute
(
tableauStores
,
monIterateur
)
FIN
RENVOYER
tableauStores
SINON
Donc dans cette portion de code j'appelle executeRequete() qui est une méthode de ma classe SQL qui Fait un :
HExécuteRequêteSQL
(
mSD
,
mConnexion
,
hRequêteSansCorrection
,
requete
)
Donc le executeRequete() va modifier par référence la source de données initialisée dans getStores() pour ensuite mettre le résultat dans mon tableau d'objets dynamiques. Et cela fonctionne avec l’émulateur mais pas en conditions réelles de déploiement.
J'espère avoir bien expliqué mon problème, si besoin d'informations complémentaires faites moi signe..
Merci d'avance pour vos réponses.
Maxime.B
Signaler
0
0
François C.
#2
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 03 juillet 2017 - 00:15
Au pire, faire :
mSD est une Source de Données = mSQL.executeRequete(REQUETE_GET_STORES)
Et donc executeRequete, renvoi une source données.
D'une manière générale, une méthode d'un objet devrait toujours travailler de façon autonome et RENVOYER un résultat plutôt que de travailler et modifier directement un des paramètres.
Signaler
0
0
Gaël
#3
Membre enregistré
151 messages
Popularité : +7 (7 votes)
Posté le 06 juillet 2017 - 15:45
Dans votre méthode "executeRequete", indiquez avant le second paramètre le mot-clé "LOCAL" pour indiquer un passage par valeur.
Quelque chose comme ça :
PROCEDURE executeRequete(param1 chaine, LOCAL param2 Source de Donnees)
Signaler
0
0
→ Revenir à WINDEV Mobile 2024
WINDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (précédentes versions)
WEBDEV (précédentes versions)
WINDEV Mobile (précédentes versions)
Etats & Requêtes
Hors-sujet
Outils
Français
English
Español
Portuguesa
Fermer cette fenêtre
Type de recherche
Uniquement les sujets
Tous les messages
Période de recherche
Date indifférente
Moins d'une heure
Moins de 24 heures
Moins d'une semaine
Moins d'un mois
Moins d'un an
Annuler
Aperçu de votre message
Ajouter une image
Importer une image depuis une URL
Envoyer une image depuis un fichier de votre disque
Déposez ici un fichier ou cliquez sur "Parcourir..."
ou
Annuler
0%
WLangage
SQL
XML, HTML
JAVA, Javascript
Texte