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

Access Discussion :

[SQL]Probleme avec chaine de caracteres


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut [SQL]Probleme avec chaine de caracteres
    Voici,

    Est-ce qu'il existe une restriction concernant le nombre de caracteres que l'on peut associer a une STRING? Je pensais que l'on pouvais mettre 2Exp16 caracteres mais si je met la string suivante, l'editeur de code ne le permet pas....

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Count(Priority.group) AS GroupCount, Priority.group
    FROM Trips INNER JOIN Priority ON Trips.purpose = Priority.priorityName
    WHERE (((Trips.status)='Approved' Or (Trips.status)='Flown' Or (Trips.status)='Completed') AND ((Year([dateDep]))=Year(Now())) AND ((Trips.aircraftCommander)='" & crew & "') AND ((Priority.group)='student')) OR (((Trips.status)='Approved' Or (Trips.status)='Flown' Or (Trips.status)='Completed') AND ((Year([dateDep]))=Year(Now())) AND ((Trips.aircraftCommander)='" & crew & "') AND ((Priority.group)='XCtry')) OR (((Trips.status)='Approved' Or (Trips.status)='Flown' Or (Trips.status)='Completed') AND ((Year([dateDep]))=Year(Now())) AND ((Trips.aircraftCommander)='" & crew & "') AND ((Priority.group)='o&b')) OR (((Trips.status)='Approved' Or (Trips.status)='Flown' Or (Trips.status)='Completed') AND ((Year([dateDep]))=Year(Now())) AND ((Priority.group)='student') AND ((Trips.pax)='" & crew & "')) OR (((Trips.status)='Approved' Or (Trips.status)='Flown' Or (Trips.status)='Completed') AND ((Year([dateDep]))=Year(Now())) AND ((Priority.group)='XCtry') AND ((Trips.pax)='" & crew & "')) OR (((Trips.status)='Approved' Or (Trips.status)='Flown' Or (Trips.status)='Completed') AND ((Year([dateDep]))=Year(Now())) AND ((Priority.group)='o&b') AND ((Trips.pax)='" & crew & "'))
    GROUP BY Priority.group
    ORDER BY Priority.group;


    Acheo

  2. #2
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonsoir,

    Comment entre-tu ton code SQL

    Sous la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim sSQL as STRING
    sSQL = "SELECT Count(Priority.group) AS GroupCount, Priority.group "
    sSQL = sSQL & "FROM Trips "
    ....
    ....

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    un string est limité à 256 caractères
    mais FreeAccess a aussi raison ta requete est trop longue pour l'éditeur de code.
    il faut la découper d'ailleur je ne me souviens plus comment on fait pour ne pas avoir à sommer il me semblait avec un "_" en fin de ligne mais ca marche pas...

  4. #4
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Bonsoir,
    Si on ne compte que ton critère, ce dernier contient 1218 caractères! C'est trop! Il faut que tu réduises ce nombre, par exemple en utilisant une autre forme d'expression pour les critères contenant des opérateurs OU sur les mêmes champs à remplacer par un IN(x,y,z,...).
    Code exemple : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'au lieu de cette ligne qui fait 75 caractères pour la partie critère sans le mot clé WHERE
    WHERE Trips.STATUS='Approved' OR Trips.STATUS='Flown' OR Trips.STATUS='Completed'
    'choisis le code ci-dessous qui ne fait que 47
    WHERE Trips.STATUS IN('Approved','Flown','Completed')
    Je sais que ce n'est pas top mais cela réduit le nombre de caractères.
    Mais pourquoi ne pas utiliser une procédure stockée: une requête enregistrée dans la base de données en définissant des paramètres sur les champs qui utilisent la variable crew?
    Je pense que c'est mieux!

    Bon courage et @+

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    voila ca m'est revenu:
    ne crée pas de typage
    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
    S = "SELECT Count(Priority.GROUP) AS GroupCount, Priority.GROUP" + _
    "FROM Trips INNER JOIN Priority ON Trips.purpose = Priority.priorityName" + _
    " WHERE (((Trips.STATUS)='Approved' OR (Trips.STATUS)='Flown' OR (Trips.STATUS)='Completed')" + _
    " AND ((Year([dateDep]))=Year(Now())) AND ((Trips.aircraftCommander)='"" & crew & ""')" + _
    " AND ((Priority.GROUP)='student')) OR (((Trips.STATUS)='Approved' OR (Trips.STATUS)='Flown'" + _
    " OR (Trips.STATUS)='Completed') AND ((Year([dateDep]))=Year(Now()))" + _
    " AND ((Trips.aircraftCommander)='"" & crew & ""') AND ((Priority.GROUP)='XCtry'))" + _
    " OR (((Trips.STATUS)='Approved' OR (Trips.STATUS)='Flown' OR (Trips.STATUS)='Completed')" + _
    " AND ((Year([dateDep]))=Year(Now())) AND ((Trips.aircraftCommander)='"" & crew & ""')" + _
    " AND ((Priority.GROUP)='o&b')) OR (((Trips.STATUS)='Approved' OR (Trips.STATUS)='Flown'" + _
    " OR (Trips.STATUS)='Completed') AND ((Year([dateDep]))=Year(Now()))" + _
    " AND ((Priority.GROUP)='student') AND ((Trips.pax)='"" & crew & ""'))" + _
    " OR (((Trips.STATUS)='Approved' OR (Trips.STATUS)='Flown' OR (Trips.STATUS)='Completed')" + _
    " AND ((Year([dateDep]))=Year(Now())) AND ((Priority.GROUP)='XCtry')" + _
    " AND ((Trips.pax)='"" & crew & ""')) OR (((Trips.STATUS)='Approved'" + _
    " OR (Trips.STATUS)='Flown' OR (Trips.STATUS)='Completed') AND ((Year([dateDep]))=Year(Now()))" + _
    " AND ((Priority.GROUP)='o&b') AND ((Trips.pax)='"" & crew & ""'))" + _
    " GROUP BY Priority.GROUP" + _
    " ORDER BY Priority.GROUP;"
    et je suis d'avis avec Mahefasoa.

Discussions similaires

  1. probleme remplacement chaine de caractere avec SED
    Par rhaamo dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 24/01/2007, 15h12
  2. probleme glibc avec chaine de caracteres.
    Par Mr_Chut dans le forum C
    Réponses: 16
    Dernier message: 25/07/2006, 14h06
  3. [MySQL] probleme decoupage chaine de caractere
    Par mahfout_i dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/03/2006, 18h57
  4. Probleme avec remplacement de caractere
    Par genzo93 dans le forum ASP
    Réponses: 9
    Dernier message: 18/01/2005, 10h51
  5. Pb Update avec chaine de caractere
    Par JuJu° dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/05/2003, 15h58

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