IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

windev mobile requette sql haversine formula [WD23]


Sujet :

WinDev

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut windev mobile requette sql haversine formula
    Bonjour j'ai une requête qui me permet de calculer la distance entre deux positions avec latitude et longitude voici quand j’exécute sur le simulateur ça me donne un résultat parfait et égal à ce que donne la fonction géodistance() mais quand je génère l'apk ça ne me donne pas le même résultat je comprends pas est-ce que Android ne supporte pas ces commande SQL ou c'est quoi le problème ?
    Voici la requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT 
    lieu.IDlieu AS IDlieu,	
    lieu.latitude AS latitude,	
    lieu.longitude AS longitude,
    SQRT(POWER(lieu.latitude-{prmlatitude},2)+POWER(lieu.longitude-{prmlongitude},2) ) AS distance,
    (  6371* ACOS( ( ( ( COS( RADIANS( {prmlatitude} ) ) * COS( RADIANS( lieu.latitude ) ) ) * COS( ( RADIANS( lieu.longitude ) - RADIANS( {prmlongitude} ) ) ) ) + ( SIN( RADIANS( {prmlatitude} ) ) * SIN( RADIANS( lieu.latitude ) ) ) ) ) )   AS distance2	
    FROM 
    lieu
    remarque : les calculs sont déduis de haversine formula

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Normalement, une requête, ça renvoie toujours le même résultat, peu importe si c'est la machine de développement, ou une autre machine.
    Ca renvoie le même résultat ... à condition que les fichiers lus contiennent les mêmes données !
    Ici, tu lis un fichier nommé lieu, et tu as 2 paramètres prmlongitude et prmlatitude. As tu vérifié si tout ça était bien identique entre les 2 environnements ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    oui j'ai bien vérifier que j'utilise le même fichier et les mêmes paramètres mais ça me donne un résultats différent le simulateur donne un résultat juste et android faux.

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Essaie en simplifiant la requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
    lieu.IDlieu AS IDlieu,	
    lieu.latitude AS latitude,	
    lieu.longitude AS longitude,
     COS( RADIANS( lieu.latitude ) ) AS test	
    FROM 
    lieu
    Si cette requête renvoie la même chose dans les 2 environnements, tu continues, en te rapprochant de plus en plus de la fonction voulue. Ainsi, tu vas pouvoir identifier pourquoi ça buggue. Et après, il y aura probablement des façons de contourner le bug.
    Si bug il y a.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    malheureusement le premier test a échoué ça donne une valeur fauce sur android. d'apré ce que j'ai lu dans un certain article java ne supporte pas certain fonction de sql
    merci pour votre aide si vous avez une solution ou sa marche chez vous merci de m'informé bengricheriad@gmail.com

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Ok, le premier test a échoué, pas de problème.
    Continuons le diagnostic, en simplifiant encore la requête.
    Si on supprime la fonction RADIANS() , est-ce que la requête donne le même résultat dans les 2 environnements.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 
    lieu.IDlieu AS IDlieu,	
    lieu.latitude AS latitude,	
    lieu.longitude AS longitude,
     COS(   lieu.latitude  ) AS test	
    FROM lieu
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    le COS ne marche pas retourner des valeurs fausse

  8. #8
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    cos renvoie des valeurs fausses ? Je pense que cos renvoie des valeurs différentes de ce que tu attends. Mais ça ne veut pas dire que cos renvoie des valeurs fausses.

    Par exemple, cos(90) il y a 2 écoles : Certains vont te dire que cos(90)=1, d'autres vont te dire que cos(90) = -0.448.
    Les 2 ont raison. Simplement, ils ne parlent pas la même langue. Le premier parle en degrés, et le second parle en radians.

    Essaie ceci :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 
    lieu.IDlieu AS IDlieu,	
    lieu.latitude AS latitude,	
    lieu.longitude AS longitude,
     COS(90) AS test_cos90, cos(1.57) as test_COS1P57
    FROM lieu
    Et dis nous ce que tu obtiens. On saura ainsi si COS travaille en degrés, ou en radians. Et ce sera alors très facile d'adapter le traitement.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    La fonction COS ne marché pas COS (10) a donné comme résultats 10
    j'ai réglé le problème en mettant la base donné un serveur Windows distant alors quand la requête s’exécute dans le serveur elle retourne de bonne résultats.
    merci a vous.

    Cordialement,

    BENGRICHE Riad

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accès Base de données SQL-Server en WinDev Mobile
    Par rst031 dans le forum WinDev
    Réponses: 2
    Dernier message: 28/06/2017, 19h13
  2. Requete SQL en WINDEV Mobile
    Par ameurbilel dans le forum Windev Mobile
    Réponses: 2
    Dernier message: 15/02/2017, 10h46
  3. [WD17] windev mobile 17 Utilisation du sql
    Par thecam64 dans le forum WinDev
    Réponses: 10
    Dernier message: 27/01/2012, 14h17
  4. [Windev Mobile, SQL Server et RPC] Retour d'expérience ?
    Par Penouille dans le forum Windev Mobile
    Réponses: 3
    Dernier message: 20/09/2011, 09h27
  5. requette sql compliqué sous delphi
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/03/2004, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo