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

Bases de données Delphi Discussion :

Pb d'envoi de requete via un TADOQuery à une BD access


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Pb d'envoi de requete via un TADOQuery à une BD access
    ma requete est celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM film
    WHERE Durée <= #12/30/1899 1:25:0#;
    je l'ai bien mis dans la propriete de mon TADOQuery la connexion ce fait correctement puisque j'arrive tout a fait a faire toutes mes autres requete !

    pour cette requete il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Objet Parameter défini de manière incorrecte. Des informations incohérentes ou incomplètes ont été fournies.
    J'ai tester cette requete directement sous ACCESS no pb mais des que je veux la faire executer par l'ADO problème !

    je pense que ca vient du format de ma durée mais je ne sais pas comment passé !!! quelqu'un aurait-il la solution ???

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut
    le plus simple avec les formats datetime c'est d'utiliser un paramètre et de le charger avant de faire la requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM film 
    WHERE Durée <= #12/30/1899 1:25:0#;
    devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM film 
    WHERE Durée <= :LADUREE;
    et avant de faire ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaRequete.ParamByName('LADUREE').AsDateTime := <la date et l'heure>;

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    merci Merlin mais j'ai po reussi j'ai du mal a comprendre ! en fait j'ai un objet qui genere ma requete dynamiquement et l'une de me methode est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure class_Requete.modifieDuree(duree, choixDeDuree: string);
    var signe:string;
    begin
      if choixDeDuree = 'au moins' then
        signe := '>=';
      if choixDeDuree = 'égal' then
        signe := '=';
      if choixDeDuree = 'au plus' then
        signe := '<=';
      fnPrincipale.RecherchePrecise.ParamByName('LADUREE').AsDateTime := '12/30/1899 '+duree+':0';
    //  Self.duree := 'AND film.Durée '+signe+' #12/30/1899 '+duree+':0#'; // Ici ma 1er tentative desesperée
      Self.duree := 'AND film.Durée '+signe+' :LADUREE';
    end;
    et apres une autre methode envoi et fait executer la requete !!! mais lorsque j'ecris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fnPrincipale.RecherchePrecise.ParamByName('LADUREE').AsDateTime := '12/30/1899 '+duree+':0';
    il me dit erreur car il ne connait pas la methode ParamByName de l'objet RecherchePrecise [TADOQuery] !!!

    Voilà peux tu me dire où j'ai loupé le coche ?

  4. #4
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut
    Well..

    Bon, quand tu génères ta requête, il faut aussi générer le paramètre..
    DOnc après les signes (=, <= etc) tu dois mettre le param, par exemple UREE (les deux points sont importants et sont collés au nom).

    Ensuite, tu dois dans la foulée donner la valeur, pour ça il faut bien entendu utiliser les params de l'objet de requête.
    Avec un TQUery c'est ParamByName, avec un TADOQuery c'est parameters.ParamValue['LADUREE'] := now; (par exemple).
    Vérifie par F1 le nom exact j'ai un petit doute, mais c'est comme ça qu'il faut faire.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Excusez moi du temps qui est passé pas eu le temps de me repenché dessus !
    J'ai donc reussi à générré une requete qui ne fait pas planter l'application , :p mais elle ne fonctionne toujours pas, cad elle ne me renvoi aucun resultat alors je ne sais pas si c'est ma requete qui ne correspond pas a ma recherche ou ...
    Donc ce code fonctionne ;o)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fnPrincipale.RecherchePrecise.Parameters.ParamValues['DUREE'] := duree;
    qsdduree := 'AND Durée > :DUREE';
    Mais si j'affiche la requete qui est executer j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...AND Durée > :DUREE ORDER BY ...
    Y aurai t'il possibilité de voir la requete sous toute ca forme qui est envoyé à ma base Acces ?

Discussions similaires

  1. Requete INSERT INTO vers une base ACCESS
    Par Milyshyn76 dans le forum C#
    Réponses: 0
    Dernier message: 04/06/2009, 13h16
  2. Requete d'ajout d'une base ACCESS à une autre
    Par ade94 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 19/06/2007, 11h09
  3. [VBA-E] Requetes depuis Excel sur une Base Access sécurisée
    Par DhiSan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/05/2006, 19h44
  4. requetes BUSINESS OBJECT sur une base ACCESS
    Par greatmaster1971 dans le forum Deski
    Réponses: 1
    Dernier message: 06/10/2004, 15h10

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