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

C++Builder Discussion :

[C++ Builder 2005] Pb de parametres de type date dans un DFM


Sujet :

C++Builder

  1. #1
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut [C++ Builder 2005] Pb de parametres de type date dans un DFM
    Bonjour,

    Je travaille sur un programme et j'utilise un DFM pour récuperer des requêtes contenant des paramètres renseignés dans le .cpp
    Ces paramètres sont des dates. J'ai une date de début et une date de fin (: DateDebutAnalyse et : DateFinAnalyse). (les deux points sont collés au paramètre, c'est pour éviter d'avoir un smiley )
    Dans ma requête, je renvoie une date à partir d'une table que je compare à ces deux dates.
    Le soucis est que le type du champ date renvoyé comporte l'heure et du coup, builder considère que c'est un paramètre (parce que les paramètres commencent par des deux points, exemple : ": DateFinAnalyse")
    J'ai donc une date du type 02/03/2009 18:17:56. Si on compte le nombre total des deux points, on obtient 4 ! et donc 4 paramètres. C'est le traitement qui est fait par builder visiblement.
    L'erreur que j'obtiens est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Indice de liste hors limite (2)
    Comment puis-je contourner ce problème?

    Merci bcp.

    PS. : J'ai essayé d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format(maTable.maDate, 'dd/mm/yyyy')
    mais j'ai toujours la même erreur.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  2. #2
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut
    Salut !

    j'ai supprimé les parametres et j'ai remplacé l'instruction par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND maTable.maDate BETWEEN (now() - 365) AND now()
    et ca fonctionne. Je n'ai plus l'erreur d'indice.

    Par contre, le code ci-dessus n'est pas bon par ce que je suis obligé de passer les parametres.
    Pour info, dans le DFM, j'ai ecris les propriétés des paramètres comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Params = <
          item
            DataType = ftDateTime
            Name = 'DateDebutAnalyse'
            ParamType = ptUnknown
            Value = 0d
          end
          item
            DataType = ftDateTime
            Name = 'DateFinAnalyse'
            ParamType = ptUnknown
            Value = 0d
          end>
    Je vous remercie.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Pour éviter le problème des paramètres, tu pourrais utiliser... des paramètres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE maTable.maDate>dateStart: AND maTable.maDate<=:dateEnd:
    et définir les paramètres "dateStart" et "dateEnd"... En plus cela t'évite les soucis de conversion des dates au format local qui peut toujours poser problème si tu distribue ton appli sur des PC qui utilisent d'autres format (p.ex. pour moi en Suisse)

  4. #4
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut
    Citation Envoyé par Patrick Seuret Voir le message
    Pour éviter le problème des paramètres, tu pourrais utiliser... des paramètres:
    euh... j'ai pas très bien compris C'est ce que je fais pourtant.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Je crois que c'est moi qui ai mal compris.

    Quelles composantes utilises-tu pour accéder à la base de données? (moi j'utilise ADO)

    Tu as une erreur lorsque tu fais ta query ou lorsque tu récupères les données?

    en ADO je ferais qqch comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TADOQuery *qry=new TADOQuery();
    // Faire la demande
    qry->SQL="SELECT maDate FROM maTable WHERE date2=:dateParam;";
    qry->Parameters->ParamByName("dateParam")->Value=Now();
    qry->ExecSQL;
    // Récupérer les données
    qry->First();
    TField *fld=qry->FieldByName("maDate");
    if ((fld)&&(fld->DataType==ftDate)) {
      TDateTime date=fld->AsDateTime;
    }

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

Discussions similaires

  1. valeur par defaut d'un parametre de type date
    Par h_a_m_a_d_a dans le forum BIRT
    Réponses: 8
    Dernier message: 23/02/2007, 11h43
  2. Retrieve avec paramètre de type date
    Par digital prophecy dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 09/08/2006, 13h32
  3. [ADO] Passage de paramètre de type Date dans une requête
    Par e-ric dans le forum Bases de données
    Réponses: 6
    Dernier message: 25/01/2006, 12h36
  4. Ajouter un champs de type " Date " dans ma base ac
    Par hysteresis dans le forum Langage SQL
    Réponses: 16
    Dernier message: 10/10/2005, 16h10
  5. insertion d'un type date dans une table access
    Par monstour dans le forum ASP
    Réponses: 7
    Dernier message: 18/06/2004, 16h57

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