FOROS PROFESIONALES
WINDEV
,
WEBDEV
y
WINDEV Mobile
Inicio
|
Mensajes recientes
|
Conéctese...
|
Desconectar
|
Español
Inicio
→
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 ?
Iniciado por Maxime BOUILLON, 23,jun. 2017 14:17 - 2 respuestas
Conéctese…
Maxime BOUILLON
#1
Publicado el 23,junio 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
Informar
0
0
François C.
#2
Miembro registrado
1.623 mensajes
Popularité : +100 (114 votes)
Publicado el 03,julio 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.
Informar
0
0
Gaël
#3
Miembro registrado
151 mensajes
Popularité : +7 (7 votes)
Publicado el 06,julio 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)
Informar
0
0
→ Volver a WINDEV Mobile 2024
WINDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (versiones precedentes)
WEBDEV (versiones precedentes)
WINDEV Mobile (versiones precedentes)
Reports & Queries
Irrelevante
Herramientas
Français
English
Español
Portuguesa
Fermer cette fenêtre
Búsqueda Tipo
Sólo temas
Todos los mensajes
Periodo Buscar
Cualquier fecha
Última hora
Última 24 horas
Última semana
Último mes
Último año
Cancelar
Vista previa del mensaje
Añadiendo una imagen
Importar una imagen desde una URL
Enviar una imagen desde un archivo de su disco
Arrastrar un archivo o click en "Examinar..."
o
Cancelar
0%
WLanguage
SQL
XML, HTML
JAVA, Javascript
Texto