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

VB.NET Discussion :

Problème de quotes VB Net


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut Problème de quotes VB Net
    Bonjour bonjour,

    Je développe un programme sous Vbnet, et il me met une erreur dans mon fichier de connexion. Lorsqu'il exécute la requête, il ne trouve rien, alors que si je remplace mon '" & Appartement.num_app.Text & "' par un chiffre, cela fonctionne.

    Voici la partie de mon code de connexion où il y a la requête :
    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
    'Ouverture de connexion à la base
                sql = "select client.num_cli, nom_cli, pre_cli, rue_cli, cp_cli, ville_cli, num_app, rue_app, cp_app, ville_app from CLIENT, APPARTEMENT where CLIENT.num_cli = APPARTEMENT.num_cli and num_app like '" & Appartement.num_app.Text & "';"
                commande = New OleDbCommand(sql)
                lien = New OleDbDataAdapter(commande)
                commande.Connection = con
                'La méthode Fill de l'objet ODbAdapter permet de remplir le Dataset
                'le dataset s'appelle "liste des clients" qui est le nom de l'espace mémoire
                'le DataSet peut travailler en mode déconnecté
                lien.Fill(dtset, "Liste des clients locataires de l'appartement")
    
                '-----------maximum
                'Avant de fermer récupération du maximum d'enregistrement
                max = "select client.num_cli, nom_cli, pre_cli, rue_cli, cp_cli, ville_cli, num_app, rue_app, cp_app, ville_app from CLIENT, APPARTEMENT where CLIENT.num_cli = APPARTEMENT.num_cli and num_app like '" & Appartement.num_app.Text & "';"
    
                'Execution de la requête du maximum et récupération du résultat de la requête
                commande = New OleDb.OleDbCommand(max, con)
                max_num = (commande.ExecuteScalar)
    
                '------------nb total d'enregistrements
                'Avant de fermer récupération du total d'enregistrements
                nb = "select client.num_cli, nom_cli, pre_cli, rue_cli, cp_cli, ville_cli, num_app, rue_app, cp_app, ville_app from CLIENT, APPARTEMENT where CLIENT.num_cli = APPARTEMENT.num_cli and num_app like '" & Appartement.num_app.Text & "';"
                'Execution de la requête du nombre total d'enregistrements et récupération
                commande = New OleDb.OleDbCommand(nb, con)
                nb_num = (commande.ExecuteScalar)
    Merci de votre aide
    Cordialement

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Hello ^^

    Retire les symbôles ', cela devrait marcher. Là tu passes une chaîne de caractère alors qu'il attend un entier je pense.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    Je les ai supprimé, et du cou il me met une erreur à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      lien.Fill(dtset, "Liste des clients locataires de l'appartement")
    me disant qu'il y a :
    Erreur de syntaxe (opérateur absent) dans l'expression 'CLIENT.num_cli = APPARTEMENT.num_cli and num_app like'.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Pour continuer dans la logique de sebnantes, quel est le type de la colonne num_app ?
    LIKE est un prédicat des chaînes pas des valeurs numériques. Si num_app n'est pas une chaîne, l'erreur vient peut être de là.

    Autre remarque, si c'est effectivement une chaîne, tu n'utilises pas de % en début et en fin de requête. Faire un LIKE sans, ça n'a pas d'intérêts.

    Au final, c'est quoi & "';" à la fin de tes requêtes ?

  5. #5
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    num_app.text est une valeur qu'il va chercher dans une de mes interfaces, et num_app dans ma bdd est un numéro automatique.

    J'utilisais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '" & Appartement.num_app.Text & "'
    avec VB6, et ça fonctionnait, du cou j'ai cherché sur les forum du net et avec ma prof, et en vb net apparemment ça fonctionne pareil.

    Certains mettent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '" + Appartement.num_app.Text + "'
    , mais le résultat est le même, il ne trouve pas la valeur.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Citation Envoyé par lola90_7 Voir le message
    num_app.text est une valeur qu'il va chercher dans une de mes interfaces, et num_app dans ma bdd est un numéro automatique.

    J'utilisais avec VB6, et ça fonctionnait, du cou j'ai cherché sur les forum du net et avec ma prof, et en vb net apparemment ça fonctionne pareil.

    Certains mettent , mais le résultat est le même, il ne trouve pas la valeur.
    ça ne répond pas à mon post. Le fait de concaténer avec & ou + ne change rien ; c'est d'ailleurs pas çà le problème. Quel est le type de la colonne num_app ?
    Si c'est un entier, le LIKE ne marchera pas !
    Que veux tu faire ? une recherche exacte ? une recherche approchée ?

  7. #7
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    num_app est dans ma bdd access de type "numéro-auto", donc je pense qu'il le considère comme un entier.
    Ma requête me permet de rechercher mes valeurs, que j'afficherai ensuite dans une interface de mon programme. Il faut donc qu'elle soit exacte.

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Citation Envoyé par lola90_7 Voir le message
    num_app est dans ma bdd access de type "numéro-auto", donc je pense qu'il le considère comme un entier.
    Ma requête me permet de rechercher mes valeurs, que j'afficherai ensuite dans une interface de mon programme. Il faut donc qu'elle soit exacte.
    Dans ce cas, pas besoin de like, ni de quotes.

    sql = "select client.num_cli, nom_cli, pre_cli, rue_cli, cp_cli, ville_cli, num_app, rue_app, cp_app, ville_app from CLIENT, APPARTEMENT where CLIENT.num_cli = APPARTEMENT.num_cli and num_app =" & Appartement.num_app.Text & "

  9. #9
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    Il me met l'erreur :
    L'exception OleDbException n'a pas été gérée. Erreur de syntaxe (opérateur absent) dans l'expression 'CLIENT.num_cli = APPARTEMENT.num_cli and num_app ='.

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Citation Envoyé par lola90_7 Voir le message
    Il me met l'erreur :
    es tu sûr que Appartement.num_app.Text n'est pas vide ?

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Par défaut
    Bonjour

    IL faut convertir un chaîne de caractère en entier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val(Appartement.num_app.Text)
    NB: petite astuce avec les BD access : quand vous avez ce genre d'erreurs, vous faites un copier de la valeur de sql$, vous la coller en mode SQL direct dans access et access va vous indiquer où est l'erreur dans la chaîne, ça facilite parfois les choses.

    A+

  12. #12
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    Justement, ce code se trouve dans ma page de connexion. La page connexion se lance donc avant d'afficher les interfaces. On ne trouve donc aucune valeur dans Appartement.num_app.Text puisque la page Appartement n'a pas encore été ouverte.

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Citation Envoyé par lola90_7 Voir le message
    Justement, ce code se trouve dans ma page de connexion. La page connexion se lance donc avant d'afficher les interfaces. On ne trouve donc aucune valeur dans Appartement.num_app.Text puisque la page Appartement n'a pas encore été ouverte.
    bah dans ce cas, retire le de ta requête !
    Pourquoi filtrer sur quelques chose qui est défini dans ton formulaire dans ce cas ?

  14. #14
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    ben oui, jveux bien, mais le truc c'est que jme sers de cette requête pour afficher; Voilà mon interface, ça t'aidera peut être plus pour comprendre.

    A moins que j'insère comme sur VB6 ma requête dans le code de mon interface:

    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
    Dim rs_rendre As Recordset
    Dim sql_rendre As String
     
     
    Set rs_rendre = New ADODB.Recordset
    rs_rendre.CursorType = adOpenDynamic
    rs_rendre.CursorLocation = adUseClient
    sql_rendre = "Select ELEVE.NOM_ELEVE, ELEVE.PRENOM_ELEVE, EMPRUNT.NUM_EMPRUNT, EMPRUNT.DATE_SORTIE, EMPRUNT.DATE_RENTREE "
    sql_rendre = sql_rendre & "from EMPRUNT INNER JOIN (ELEVE INNER JOIN EMPRUNT_ELEVE ON ELEVE.NUM_ELEVE = EMPRUNT_ELEVE.NUM_ELEVE) ON EMPRUNT.NUM_EMPRUNT = EMPRUNT_ELEVE.NUM_EMPRUNT "
    sql_rendre = sql_rendre & "where EMPRUNT.NUM_LIVRE=" & CInt(num_livre.Text)
    rs_rendre.Open sql_rendre, cn, adOpenDynamic, adLockOptimistic
     
    Text4.Text = rs_rendre.Fields(0)
    Text5.Text = rs_rendre.Fields(1)
    Text1.Text = rs_rendre.Fields(2)
    Text2.Text = rs_rendre.Fields(3)
    Text3.Text = rs_rendre.Fields(4)
    Images attachées Images attachées  

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Par défaut
    Bonjour,

    1) sous vb6 vous faisiez bien la conversion ( Cint()) ! [edit] qui plus est erronée car cela aurait du être Clng() [\Edit]

    2) Sans savoir dans quel événement le code que vous donnez est placé c'est un peu difficile de déduire qq chose.
    C'était certainement pas dans le Form_Load d'une feuille comportant le textbox num_livre !

  16. #16
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Citation Envoyé par Geo2A Voir le message

    2) Sans savoir dans quel événement le code que vous donnez est placé c'est un peu difficile de déduire qq chose.
    C'était certainement pas dans le Form_Load d'une feuille comportant le textbox num_livre !
    en effet, c'est quoi le rapport entre les élèves et les appartements ?

  17. #17
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    c'était juste un exemple de code que j'avais fait en vb6 sur un autre programme (Il était placé dans le form_load). Je voulais savoir si avec un algorithme de ce type placé dans ma page appartement (en VB Net), je pouvais faire un lien avec ma bdd et afficher mes valeurs.

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Citation Envoyé par lola90_7 Voir le message
    c'était juste un exemple de code que j'avais fait en vb6 sur un autre programme (Il était placé dans le form_load). Je voulais savoir si avec un algorithme de ce type placé dans ma page appartement (en VB Net), je pouvais faire un lien avec ma bdd et afficher mes valeurs.
    par rapport à ton premier post, il y a quelque chose que je ne comprends pas. Pourquoi as tu toujours la même requête SQL ? C'est à toi de l'adapter en fonction de tes besoins ! Si tu veux tous les données dans le Form Load, ne mets pas de clause Where, si tu veux les infos d'un appartement alors filtre sur cet appartement. C'est l'impression que tu mélanges un peu les choses...

  19. #19
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    J'ai créé un module en plus de celui de connexion, où j'ai mis le code de mon premier post.
    Du cou, je l'appelle uniquement une fois que le numéro de l'appartement sur mon interface ai été affiché, ce qu'il ne me pose plus de problème de requête !

    Merci pour votre aide

    Cordialement

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

Discussions similaires

  1. Problème de quote avec XPath
    Par fadjerx dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 23/03/2006, 14h45
  2. [AJAX] Ajax et ASP.NET
    Par boleduch dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/03/2006, 16h15
  3. [JS] Problème de quotes pour enregistrer un formulaire.
    Par polnioumane dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 24/10/2005, 17h04
  4. Problème de quotes sous PostGre
    Par Philhz dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 11/07/2004, 13h03
  5. Problème de quote
    Par kennini dans le forum ASP
    Réponses: 4
    Dernier message: 20/11/2003, 09h40

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