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

SQL Firebird Discussion :

Probleme avec sql FireBird


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Par défaut Probleme avec sql FireBird
    Bonjour tout le monde;
    J'ai un champ dans une table; ce champ peut avoir soit une valeur 'P' soit une valeur 'R' soit rien c-a-d Null.
    Je veut exécuter la requette suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from Table where champ <> 'P'
    Le problème c'est que la requette ne retourne rien même qu'ils existes des champs avec des valeurs 'P' et d'autres non;
    Par contre si j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from Table where champ = 'P'
    j'obtiens le résultat attendu.
    Je n'arrive pas à résoudre le problème, j'espère qu'on va tirer quelque chose de ce problème et qu'il ne soit pas une bêtise de ma part.

  2. #2
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut


    bizarre, cela devrait fonctionner sans problème pourtant, j'ai fait le même test et tout marche sans souci.

    peux tu donner la définition de ta table, notamment le type de "champ"

    tu peux aussi essayer ceci qui revient à ta première requête :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TABLE WHERE not(champ = 'P')

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Par défaut
    Je pense que c'est du au composant ADO. Quant je lance la requette à partir de IBEasy, elle marche normalement mais quant je la lance depuis l'application par le biais d'un composant ADOQuery j'ai un message d'erreur;
    Je pense qu'il vaut mieux larguer ADO vers autres choses.

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    Citation Envoyé par kaouane Voir le message
    mais quant je la lance depuis l'application par le biais d'un composant ADOQuery j'ai un message d'erreur;
    ce serai bien que tu nous poste le message d'erreur ici

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Par défaut
    Citation Envoyé par evarisnea Voir le message
    ce serai bien que tu nous poste le message d'erreur ici
    si dans ma table j'ai plusieurs champs avec une valeur 'P', si je lance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Procedure TFomr1.Button1Click(sender TObject)
    var Q:TADOQuery;
    begin
      Q:=TADOQuery.Create(nil)
      Q.Connection:=dm.ADOConnection1;
      Q.sql.Add('Select * from table where (champ<>'+QuotedStr('P')+') or (champ is Null)');
      Q.Open;
      Showmessage(IntToStr(Q.recordount));
      Q.close;
      Q.Free;
    end;
    j'ai le bon résultat; mais si j'écris :

    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
     
    Procedure TFomr1.Button1Click(sender TObject)
    var Q:TADOQuery;
    begin
      Q:=TADOQuery.Create(nil)
      Q.Connection:=dm.ADOConnection1;
      Q.sql.Add('Select * from table');
      Q.Open;
      Showmessage(IntToStr(Q.recordount));
    // jusque là c bon, mais si je continu
      Q.filter=' (champ<>'+QuotedStr('P')+') or (champ is Null)';
      Q.filtered:=true;
      Showmessage(IntToStr(Q.recordount));
      Q.close;
      Q.Free;
    end;
    le message d'erreur apparait :
    "Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres"

  6. #6
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    OPEN avant de filtrer

    L'open déclenche l'exécution de la requète. "Bricoler" les autres paramètres du ADOquery après l'exécution... je m'y hasarderais pas.

    Pourquoi ne mets tu pas toute la requête dans le sql ?

  7. #7
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Et avec un code comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from Table where champ <> 'P' and NOT (champ IS NULL )

Discussions similaires

  1. probleme avec sql
    Par joe370 dans le forum VBA Access
    Réponses: 7
    Dernier message: 30/05/2007, 13h24
  2. probleme avec sql server
    Par elamarti dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/03/2007, 12h43
  3. probleme avec sql server 2005
    Par tarajji dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/02/2007, 17h28
  4. tres urgent : probleme avec sql server
    Par nourelhouda dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/03/2006, 11h19

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