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

Requêtes MySQL Discussion :

Format des données avec maskedtextbox


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Autre sans rapport avec l'informatique
    Inscrit en
    Février 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Autre sans rapport avec l'informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2016
    Messages : 38
    Par défaut Format des données avec maskedtextbox
    Bonjour,

    avec MySql j'essaye de rentrer des données dans une table sur db4free.net. Il s'agit d'une Latitude,
    donc exprimé de la façon suivante:
    N 45°24,45' (nord 45 degres 24,45 minutes)
    cette données est rentree grace a une maskedtextbox ayant pour format ? 00°00,00'

    la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str = "insert into table (Latitude) values ('" & latitude.text & "');
    et la, a chaque fois une erreur de syntaxe est detectee

    si je retire le symbole ' alors la requete est acceptée.
    c'est donc cette apostrophe dans le format de ma donnée qui coince

    Question: comment faire pour rentrer ma donnée sous ce format la, ce qui est important puisque ulterieurement je voudrais ressortir la table pour l'imprimer avec en passant par un gridview ou qqch comme ça.

    Autre question: sur le meme serveur (db4free.net), je n'arrive pas a faire une 2eme base de données
    la requete create database ne fonctionne pas
    je n'arrive pas non plus a la creer sur le site db4free
    est ce normal, y a t il qqchose dans la config sur db4free qui coince ou est ce une volonte de l'hebergeur de limiter le nombre de base

    Merci de votre aide

    Denis

    PS: ma table de données est configurées pour la colonne avec TEXT
    apparemment cela ne change rien si le type est VARCHAR

  2. #2
    Membre averti
    Homme Profil pro
    Autre sans rapport avec l'informatique
    Inscrit en
    Février 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Autre sans rapport avec l'informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2016
    Messages : 38
    Par défaut
    Et si le format souhaité pour cette latitude etait:
    N45°25'15" pour 45 degres 25 minutes et seconde, j'imagine que le probleme serait double, puisque j'ai ' et " .........

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 138
    Par défaut
    Il faut doubler les apostrophes à l'intérieur d'une chaine pour qu'elles soient prises en charge.
    Sinon comment différencier l'apostrophe au milieu de la chaine de celle qui la termine ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre averti
    Homme Profil pro
    Autre sans rapport avec l'informatique
    Inscrit en
    Février 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Autre sans rapport avec l'informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2016
    Messages : 38
    Par défaut
    Merci pour l'info.
    Mais ça ne marche pas Voila exactement ce que j'ai:
    Une maskedtextbox:
    je rentre S085125
    elle ressort S 08°51,25' donc Latitudetxt.text = S 08°51.25'
    ensuite, voila la requete:
    INSERT INTO matable (Nom, Latitude, Longitude) VALUES ('" & Nomtxt.text & "', '" & Latitudetxt.text & "', '" & Longitudetxt.text & "');
    le ' de la latitude n'apparait pas dans la requete (ce qui me semble tout a fait normal puisque le ' est dans Latitudetxt.text.......
    et donc mon apostrophe met le bazard

    Ma requête semble bonne car si je change le format de ma maskedtextbox en retirant le ' , tout se passe normalement!!!!!
    De plus , dans VB , les couleurs des differentes parties de la requete sont coherentes, il fait bien la difference entre ce qui est du code (Latitudetxt.text), et ce qui est de la requete (du string en rouge)

    La derniere solution, je vire le ' la maskedtextbox mais l'utilisateur du petit programme ne saura jamais instinctivement si on parle de secondes ou de 100ième de minutes!!! et les calculs a faire avec cette données risquent fort d'etre faux (ou du moins pas les memes qu'avec des calculs a la main )

  5. #5
    Membre averti
    Homme Profil pro
    Autre sans rapport avec l'informatique
    Inscrit en
    Février 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Autre sans rapport avec l'informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2016
    Messages : 38
    Par défaut
    Pour la suite, je souhaite remettre les noms dans une dropdownliste
    apparemment j'ai 2 possibilités
    1 - lier la dropdownliste a la table dans les proprietes..... mais je n'arrive pa a lier le controle a la database qui est chez db4free (il me propose a chaque fois une BDD locale!!)
    2 - ecrire du code, ouvrir la base de données(select from database * in nom) pour lire la colonne nom et utiliser la methode additem de la dropdownlist
    quelle est la meilleure solution et comment faire pratiquement

    merci

  6. #6
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 142
    Par défaut
    Salut à tous.

    Citation Envoyé par al1_24
    Il faut doubler les apostrophes à l'intérieur d'une chaine pour qu'elles soient prises en charge.
    Oui, c'est une solution, mais ce n'est pas ce qui recommandé de faire.

    Citation Envoyé par al1_24
    Sinon comment différencier l'apostrophe au milieu de la chaîne de celle qui la termine ?
    Il faut utiliser le caractère d'échappement '\' (ou backslash) pour dire que l'apostrophe (ou autre chose) ne doit pas être interprété.
    Voici un exemple, pour insérer votre chaîne de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
        DEFAULT CHARACTER SET `latin1`
        DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    drop table if exists `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`         integer unsigned  NOT NULL AUTO_INCREMENT,
      `latitude`   varchar(255)      NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`latitude`) values
      ('N 4524,45\'')
    --------------
     
    --------------
    select * from test
    --------------
     
    +----+-------------+
    | id | latitude    |
    +----+-------------+
    |  1 | N 45°24,45' |
    +----+-------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    Comment faire pour mettre ce caractère d'échappement ?
    En PDO, il faut utilisez la fonction quote() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $latitude = "N 45°24,45'";
     
    $result = $link->quote($latitude);
     
    echo $result;
    ?>
    @+

  7. #7
    Membre averti
    Homme Profil pro
    Autre sans rapport avec l'informatique
    Inscrit en
    Février 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Autre sans rapport avec l'informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2016
    Messages : 38
    Par défaut
    bien , donc un \
    dans VB2010 dans une windowsform en basic, ça donnerait quoi sur cette chaine??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO matable (Nom, Latitude, Longitude) VALUES ('" & Nomtxt.text & "', '" & Latitudetxt.text & "', '" & Longitudetxt.text & "');
    merci

  8. #8
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 142
    Par défaut
    Salut TWINOTTER.

    Citation Envoyé par Rwinotter
    ça donnerait quoi sur cette chaîne??
    Rien du tout, car cela ne se fait pas sur la totalité de la requête, mais juste sur les valeurs à insérer.

    C'est-à-dire sur :
    --> Nomtxt.text
    --> Latitudetxt.text
    --> Longitudetxt.text
    afin d'éviter d'avoir des caractères parasites comme l'apostrophe.

    @+

  9. #9
    Membre averti
    Homme Profil pro
    Autre sans rapport avec l'informatique
    Inscrit en
    Février 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Autre sans rapport avec l'informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2016
    Messages : 38
    Par défaut
    Bonsoir Artemus24,
    je pense que je me suis mal exprimé......
    je me demandais bien ou je pouvais placer le \ dans la requete.
    Si je comprends bien, c'est dans la chaine de texte qu'il faut que je mette le \ avec un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    latitude.text = latitude.text & "\"
    avant d'envoyer latitude.text dans la requete
    Mais a ce moment, ce qui est inserer dans matable sera S08°51.25'\ ??
    J'ai bien du mal a voir comment se comporte ce truc.....

  10. #10
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 142
    Par défaut
    Salut Twinotter.

    Citation Envoyé par Twinotter
    Je pense que je me suis mal exprimé......
    Non.

    Citation Envoyé par Twinotter
    je me demandais bien ou je pouvais placer le \ dans la requête.
    Pas dans la requête. Je vous ai donné deux exemples. Dans le premier exemple, je place le backslash dans votre variable, comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into `test` (`latitude`) values ('N 4524,45\'')
    La partie variable, c'est ce qui se trouve entre parenthèse après le "value". Je vous mets la totalité de la requête afin de vous montrer comment l'intervention se fait.

    Dans le deuxième exemple, je passe par une fonction qui fait cela à votre place.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $latitude = "N 45°24,45'";
     
    $result = $link->quote($latitude);
     
    echo $result;
    ?>
    C'est la meilleure solution. Aucun intervention de votre part.

    Citation Envoyé par Twinotter
    Si je comprends bien, c'est dans la chaîne de texte qu'il faut que je mette le \
    Oui.

    Citation Envoyé par Twinotter
    Mais a ce moment, ce qui est insérer dans matable sera S08°51.25'\ ??
    Non.

    Citation Envoyé par Twinotter
    J'ai bien du mal a voir comment se comporte ce truc.....
    Dans le premier exemple, je vous ai fait une exécution, et vous voyez bien que dans la table le backslash à disparu.
    Faites par vous même un test et vous verrez bien.

    @+

Discussions similaires

  1. Format des date avec webviewer
    Par zambizi dans le forum BIRT
    Réponses: 2
    Dernier message: 30/06/2007, 18h01
  2. Modifier des donnees avec DBGrid ?
    Par msuire dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/12/2006, 01h58
  3. Lien Excel - Access format des données
    Par Maludi dans le forum Access
    Réponses: 4
    Dernier message: 27/11/2006, 15h03
  4. Importer des donnees avec fichier txt
    Par flOZ dans le forum Requêtes
    Réponses: 8
    Dernier message: 21/04/2006, 18h26
  5. [format des données avec une procédure stockée]
    Par viny dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 10/03/2005, 14h24

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