PROFESSIONAL NEWSGROUPS
WINDEV
,
WEBDEV
and
WINDEV Mobile
Home
|
Recent messages
|
Connect
|
Sign out
|
English
Home
→
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 ?
Started by Maxime BOUILLON, Jun., 23 2017 2:17 PM - 2 replies
Connect yourself…
Maxime BOUILLON
#1
Posted on June, 23 2017 - 2:17 PM
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
Report
0
0
François C.
#2
Registered member
1,623 messages
Popularité : +100 (114 votes)
Posted on July, 03 2017 - 12:15 AM
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.
Report
0
0
Gaël
#3
Registered member
151 messages
Popularité : +7 (7 votes)
Posted on July, 06 2017 - 3:45 PM
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)
Report
0
0
→ Go back to WINDEV Mobile 2024
WINDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (earlier versions)
WEBDEV (earlier versions)
WINDEV Mobile (earlier versions)
Reports & Queries
Off-topic
Tools
Français
English
Español
Portuguesa
Close this window
Search type
Only topics
All the messages
Search period
Any time
Past hour
Past 24 hours
Past week
Past month
Past year
Cancel
Preview of your message
Adding an image
Import an image from a URL
Send an image from a file of your disk
Drop a file or click "Browse..."
or
Cancel
0%
WLanguage
SQL
XML, HTML
JAVA, Javascript
Text