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.NET Discussion :

Requetes paramétrés avec Date et BETWEEN


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 87
    Par défaut Requetes paramétrés avec Date et BETWEEN
    Bonjour tout le monde , je viens de faire une requette paramétré qui contient la date mais à l'execution j'ai un problem , une exception se déclanche voila les détails:

    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
    20
    21
    22
     
       string req = "SELECT * FROM conge WHERE (:dateD BETWEEN conge.datedebut AND conge.datefin) OR (:dateF between conge.datedebut AND conge.datefin) AND conge.matricule_employe="+matricule ;
      //          string req = "SELECT * FROM conge WHERE ('"+DateD.ToString ()+"' BETWEEN conge.datedebut AND conge.datefin) OR ('"+DateF.ToString ()+"' between conge.datedebut AND conge.datefin) AND conge.matricule_employe=" + matricule;
     
                OracleCommand  oraCmd  = new OracleCommand ( req,oracon);
     
                OracleParameter paramDDebut = new OracleParameter();
                paramDDebut.OracleType = OracleType.DateTime;
                paramDDebut.ParameterName = ":dateD";
                paramDDebut.Value = DateD.ToString();//'ai déja esssayé sa et c'est le meme problem==>(DateTime)DateTime.Parse(DateD).Date;
     
                OracleParameter paramDFin = new OracleParameter();
                paramDDebut.OracleType = OracleType.DateTime;
                paramDDebut.ParameterName = ":dateF";
                paramDDebut.Value = DateF.ToString();//J'ai déja esssayé sa et c'est le meme problem==>(DateTime)DateTime.Parse(DateF);
     
                oraCmd.Parameters.Add(paramDDebut);
                oraCmd.Parameters.Add(paramDFin);
     
                WebMsgBox.Show(req);
     
                         OracleDataReader rs =  oraCmd.ExecuteReader();
    pour l'exception la voila !

    System.Data.OracleClient.OracleException: ORA-01008: Toutes les variables ne sont pas liées


    à System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)

    à System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)

    à System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)

    à System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)

    à System.Data.OracleClient.OracleCommand.ExecuteReader()

    à DateConge.Page_Load(Object sender, EventArgs e)
    Vraiment j'ai besoin d'aide car , sans les requettes paramétres ( en concaténant des chaines de caractéres tous marche bien !!!)

    Merci

  2. #2
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Bonjour,

    As-tu essayé avec une requête plus simple, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM conge WHERE conge.datedebut = :dateD
    C'est pour savoir si cela vient d'une des 2 déclarations des paramètres.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    OracleParameter paramDDebut = new OracleParameter();
    paramDDebut.OracleType = OracleType.DateTime;
    paramDDebut.ParameterName = ":dateD";
    paramDDebut.Value = DateD.ToString();//'ai déja esssayé sa et c'est le meme problem==>(DateTime)DateTime.Parse(DateD).Date;

    OracleParameter paramDFin = new OracleParameter();
    paramDDebut.OracleType = OracleType.DateTime;
    paramDDebut.ParameterName = ":dateF";
    paramDDebut.Value = DateF.ToString();//J'ai déja esssayé sa et c'est le meme problem==>(DateTime)DateTime.Parse(DateF);

    oraCmd.Parameters.Add(paramDDebut);
    oraCmd.Parameters.Add(paramDFin)
    Il faut corriger pour ton paramatre dateF "paramDDebut" par "paramDFin"

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    paramDDebut.ParameterName = ":dateF";
    -> 
    paramDFin.ParameterName = ":dateF";

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 87
    Par défaut
    Citation Envoyé par xian21 Voir le message
    Il faut corriger pour ton paramatre dateF "paramDDebut" par "paramDFin"

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    paramDDebut.ParameterName = ":dateF";
    -> 
    paramDFin.ParameterName = ":dateF";

    Merci bien votre réponse est juste , le problem c'est que j'ai eu la meme erreur avant et j'ai réussi a la corrigé.
    apart sa faut mettre une date pas une chaine de caractére voila la correction pour ceux qui sont intéréssés .


    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
    20
    21
    22
     
     OracleCommand  oraCmd  = new OracleCommand ( req,oracon);
     
                OracleParameter paramMat = oraCmd.CreateParameter();
                paramMat.ParameterName = ":matricule";
                paramMat.OracleType = OracleType.Number;
                paramMat.Value = matricule.TrimEnd();
     
     
                OracleParameter paramDDebut = oraCmd.CreateParameter();
                paramDDebut.OracleType = OracleType.DateTime;
                paramDDebut.ParameterName = ":dateD";
                paramDDebut.Value = (DateTime)DateTime.Parse(DateD).Date;
     
                OracleParameter paramDFin = oraCmd.CreateParameter();
                paramDFin.OracleType = OracleType.DateTime;
                paramDFin.ParameterName = ":dateF";
                paramDFin.Value = (DateTime) DateTime.Parse(DateF);
     
                oraCmd.Parameters.Add(paramDDebut);
                oraCmd.Parameters.Add(paramDFin);
                oraCmd.Parameters.Add(paramMat);

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

Discussions similaires

  1. requete select avec date
    Par druglord dans le forum Requêtes
    Réponses: 9
    Dernier message: 07/08/2006, 10h47
  2. requete paramétrée avec TADOQuery et Oracle
    Par SlimInfo dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/05/2006, 09h44
  3. [SQL] Requete sql avec dates
    Par SergeF dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/03/2006, 16h53
  4. Réponses: 4
    Dernier message: 13/02/2006, 18h58
  5. Date nulle dans une requete paramétrée avec TParameter
    Par denrette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2004, 08h37

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