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

ASP Discussion :

requete sql


Sujet :

ASP

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Août 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 54
    Points : 24
    Points
    24
    Par défaut requete sql
    voici ma requete sql.le debugger m'annonce qu'elle est trop longue pour etre interprétée.
    quelle modif dois-je faire pour que ma requete soit acceptée.
    (hello lexav! )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    sqlm="EXEC SQL WHENEVER SQLERROR GO TO ERREUR; 
             EXEC SQL INSERT INTO modele
             VALUES 
                   (:"Request.QueryString("numero_de_famille")",
                    :"Request.QueryString("groupe")"           ,
                    :"Request.QueryString("nom_modele")"       ,                                         ,
                    :"Request.QueryString("nom_court_modele")" ,
                    :"Request.QueryString("nom_menu")"; 
             EXEC SQL COMMIT; 
             exit(0) 
             erreur: 
                  EXEC SQL WHENEVER SQLERROR CONTINUE;      
                  EXEC SQL ROLLBACK;"

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Points : 136
    Points
    136
    Par défaut
    essaie d'augmenter les valeurs de myConnexion.ConnectionTimeout et myConnexion.CommandTimeout

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Août 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 54
    Points : 24
    Points
    24
    Par défaut hein????
    non,mais attends,là,tu m'étonnes.
    tu voudrais dire que si ma requete sql dépasse 15 caratères,alors on est forcément obligé de changer les paramètres de connexion?
    il me semble que la connexion dure genre 15 minutes,donc cela voudrait dire qu'elle peut tenir 15 minutes mais qu'au bout de 15 caratères de sql ,elle s'arrete? :

    tout cela m'a l'air fort peu pratique.
    non,je me doute bien que c'est un pb de "" ,de '' et de qq chose du genre.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Points : 136
    Points
    136
    Par défaut
    Ah...Ok désolé j'avais pas compris

    En fait il te manque une concaténation de chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlm="EXEC SQL WHENEVER SQLERROR GO TO ERREUR;  EXEC SQL INSERT INTO modele VALUES (" & Request.QueryString("numero_de_famille") & ", " & Request.QueryString("groupe") & ", " & Request.QueryString("nom_modele") & "," & Request.QueryString("nom_court_modele") & ", " & Request.QueryString("nom_menu") & "EXEC SQL COMMIT;  exit(0) erreur:  EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL ROLLBACK;"

  5. #5
    Expert confirmé
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 470
    Points : 5 059
    Points
    5 059
    Par défaut
    Faut faire gaffe, la requete SQL peut etre effectivement trop long en ASP...
    Je me suis deja heurté a ce probleme et la solution c'est faire une vue (=requete à l'interieure de la BD). Vive ASP

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Août 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 54
    Points : 24
    Points
    24
    Par défaut OK
    bon,ben écoute merci,mille mercis à toi

    je pense que pour la concaténation de chaines,tu as tout à fait raison,je suis cependant un peu étonné d'utiliser "" imbriqué à l'interieur de "" .

    voici mon message d'erreur sur la premiere ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Type d'erreur :
    Erreur de compilation Microsoft VBScript (0x800A0409)
    Constante chaîne non terminée
    /webburo/programmes/creation_modele.asp, line 29, column 46
    sqlm="EXEC SQL WHENEVER SQLERROR GO TO ERREUR;

  7. #7
    Expert confirmé
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 470
    Points : 5 059
    Points
    5 059
    Par défaut
    Tu peux pas faire un truc en SQL avec des request.Form("...") à l'interieur
    (il interprete ca comme une fin de commande erreur)

    Faut donc faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    num_famille=Request.Form("numero_de_famille")
    sqlm="EXEC SQL WHENEVER SQLERROR GO TO ERREUR;  EXEC SQL INSERT INTO modele VALUES (" & num_famille & ...
    Faut une variable pour chaque parametre et voila
    Et pas d'autres " " dans la chaine sQL a part au debut et a la fin

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Points : 136
    Points
    136
    Par défaut
    teuh...teuh...teuh..teuteuh....

    Qu'est ce que j'entends là??
    Tu peux pas faire un truc en SQL avec des request.Form("...") à l'interieur
    request.Form("...") te retourne une chaine de caractères, rien ne t'empêche de la concaténer avec le reste de ton SQL
    donc l'instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = "SELECT... FROM... WHERE ...=" & Request.Form("mavariable")
    fonctionne très bien. Et je précise que ça fonctionne également avec Request.QueryString("...")

    Tu n'as aucunement besoin de passer par des variables...
    Par contre il faut être sur que tes valeurs ne sont pas des chaines vides
    sinon ODBC interpretera: "SELECT... FROM... WHERE ...=" sans valeur ce qui ne veut rien dire et retournera une erreur...

    Pour vérifier le contenu de tes variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not IsEmpty(Request.QueryString("mavariable")) and Request.QueryString("mavariable")<>"" then
    ....
    ....
    End If
    Par contre il faut faire la concaténation des chaines correctement:
    -Soit tu met tout sur une seule ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = "SELECT...FROM...WHERE...=" & Request.QueryString("mavariable") & " ....=" & Request.QueryString("mavariable2")
    ATTENTION! tout est sur la meme ligne de code

    -Soit tu concatènes ta chaine SQL sur plusieurs lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sSQL = "SELECT...FROM...WHERE...=" & Request.QueryString("mavariable") 
    sSQL = sSQL & " ....=" & Request.QueryString("mavariable2")
    ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sSQL = "SELECT...FROM...WHERE...=" & Request.QueryString("mavariable") & _
           " ....=" & Request.QueryString("mavariable2")

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Points : 136
    Points
    136
    Par défaut
    Dans ton cas, tu as du retourner à la ligne sans fermer tachaine de caracteres et sans la concaténer avec le reste!

    Il faut préciser auussi que si ton filtre SQL est fait sur un champ text il faut mettre ta valeur entre guillemet:
    sSQL = "SELECT... FROM... WHERE ...='" & Request.Form("mavariable") & "'"

    et si Request.Form("mavariable") contient une appostrophe il faut la doubler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(Request.Form("mavariable"),"'","''")

  10. #10
    Inactif
    Inscrit en
    Juillet 2002
    Messages
    315
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 315
    Points : 353
    Points
    353
    Par défaut
    pour résumer :
    1/ tu récupères tes valeurs de formulaire en testant si elles ne sont pas vides
    2/ tu remplaces des ' par des '' pour les chaines de caractères
    3/ tu construis ta requête

    déjà ça devrait t'enlever 99 % des erreurs...

  11. #11
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 79
    Points : 96
    Points
    96
    Par défaut
    Attention!

    ne pas remplacer les quotes par des guillements et bien par 2 quotes!!!

  12. #12
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 79
    Points : 96
    Points
    96
    Par défaut
    de plus tu peux tout betement afficher ta requete avant de l'executer comme ca elle s'affiche avant le message d'erreurs et tu vois en quoi elle n'est pas bonne comme les quotes qui manque ou les champs vides aussi

  13. #13
    Débutant
    Profil pro
    Inscrit en
    Août 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 54
    Points : 24
    Points
    24
    Par défaut bon ben c'est cool
    merci,je me suis barré hier avant d'avoir pu lire tous les threads de réponse.
    manifestement,ce thread n'a pas servi qu'à moi.
    sans toi,cela aurait été une bérézina.
    merci pour le coup des apostrophes,guillemets et request form.

    ASP n'est pas trop pratique dans le sens où devoir concatener à chaque fois que tu changes de ligne,ça alourdit quand meme bcq le code.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Points : 136
    Points
    136
    Par défaut
    ne pas remplacer les quotes par des guillements et bien par 2 quotes!!!
    Quelques explications supplémentaire:
    sSQL à por valeur: '
    sSQL à pour valeur: "
    le doublement d'un guillemet permmet donc d'écrire un guillemet dans une chaine de caractères

    tu peux donc écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL="SELECT .... FROM... WHERE...='" & mavariable & "'"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL="SELECT .... FROM... WHERE...=""" & mavariable & """"

  15. #15
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 79
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par Troopers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL="SELECT .... FROM... WHERE...=""" & mavariable & """"
    y'a pas une petit erreur?

    je crois c'est plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sSQL="SELECT .... FROM... WHERE...="""" & mavariable & """"
    j'me trompe?

  16. #16
    Membre éprouvé
    Avatar de jérôme
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    591
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 591
    Points : 1 071
    Points
    1 071
    Par défaut
    Citation Envoyé par linkchaser
    j'me trompe?
    oui

  17. #17
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 79
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par linkchaser
    j'me trompe?
    oui je me trompe carrement je revenais pour corriger ma faute

    je retire ma remarque totalement inutile et implore votre pardon

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Points : 136
    Points
    136
    Par défaut
    Oui tu te trompes désolé...

  19. #19
    Inactif
    Inscrit en
    Juillet 2002
    Messages
    315
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 315
    Points : 353
    Points
    353
    Par défaut
    Citation Envoyé par linkchaser
    Attention!

    ne pas remplacer les quotes par des guillements et bien par 2 quotes!!!
    ebn ouais, c'est ce que j'ai marqué, mais il est vrai que ça pouvait entraîner une confusion... merci de la précision, alors

  20. #20
    Débutant
    Profil pro
    Inscrit en
    Août 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 54
    Points : 24
    Points
    24
    Par défaut dsl,ça continue
    voici mon code qui est accepté jusqu'à la derniere ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    sqlm=
    "EXEC SQL WHENEVER SQLERROR GO TO ERREUR" & _
    "EXEC SQL INSERT INTO modele" & _
    "VALUES(:"   &Request.QueryString("numero_de_famille")& _
        ",:" &Request.QueryString("groupe")& _
        ",:" &Request.QueryString("nom_modele")& _
        ",:" &Request.QueryString("nom_court_modele")& _
        ",:" &Request.QueryString("nom_menu")& _
        ");" & _ 
        "EXEC SQL COMMIT;" & _ 
               "exit(0) " & _ 
        "ERREUR:" & _
               "EXEC SQL ROLLBACK;"
    et voici le message d'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Type d'erreur :
    Erreur de compilation Microsoft VBScript (0x800A0408)
    Caractère incorrect
    /webburo/programmes/creation_modele.asp, line 47, column 22
    "EXEC SQL ROLLBACK;"
    ce qui correspond au milieu du mot rollback.
    et je me dis que s'il accepte les commit ,il doit aussi accepter les rollback,non?yen a t'il ici qui sont familiers des commit/rollback?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. DBNavigator, requete SQL et modif d'un champ
    Par TieumB dans le forum C++Builder
    Réponses: 9
    Dernier message: 27/01/2004, 08h50
  2. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  3. Prob de requete sql et variable
    Par agent-zaizai dans le forum ASP
    Réponses: 11
    Dernier message: 21/10/2003, 16h54
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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