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 :

vérification dans un champ date avec le SQL


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Points : 77
    Points
    77
    Par défaut vérification dans un champ date avec le SQL
    salam

    je suis entrain de réaliser une application de statistique donc beaucoup de requête sql ... mon problème est avec le champ date j'utilise access et adoquery pour la connexion et mon champ et de type de donné Date/Heure format Date abrégé .
    avant de poster j'ai chercher partout que ce soit sur le site ou ailleurs j'ai trouver quelque solution mais ça génère un message d'erreur a chaque fois :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    with rebut do
      begin
        sql.Clear  ;
        sql.Add('SELECT tempsdefaults.Date1');
        sql.Add('FROM tempsdefaults');
        sql.Add('WHERE (tempsdefaults.Date1)='+QuotedStr(date1.Caption));
        Open;
        qt_NC.Caption := IntToStr(RecordCount);
      end;
    c'est logique que ça marche pas puisque je cherche dans un champ date avec un string j'ai essayer ça aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    with rebut do
      begin
        sql.Clear  ;
        sql.Add('SELECT tempsdefaults.Date1');
        sql.Add('FROM tempsdefaults');
        sql.Add('WHERE (tempsdefaults.Date1)=:date');
        Parameters.CreateParameter('date', ftstring, pdInput, 0,  StrToDate(date1.Caption));
        Open;
        qt_NC.Caption := IntToStr(RecordCount);
      end;

    et voila le message d’erreur : objet paramétrer définie de manière incorrect

    j'ai essayer aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    with rebut do
      begin
        sql.Clear  ;
        sql.Add('SELECT tempsdefaults.Date1');
        sql.Add('FROM tempsdefaults');
        sql.Add('WHERE (tempsdefaults.Date1)=:date');
        Parameters.CreateParameter('date', ftDate, pdInput, 0,  (now));
        Open;
        qt_NC.Caption := IntToStr(RecordCount);
      end;
    message d'erreur :

    type de donner incompatible dans l’expression des critère

    voila si quelqu'un a une solution je suis preneur et merci d'avance.
    Delphi XE8 Architect - Win 10

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Avez vous essayé le type ftDateTime ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parameters.CreateParameter('date', ftDateTime, pdInput, 0, now);
    Et utilisez la balise [ CODE ] (bouton #) plutôt que [ QUOTE ]...
    Philippe.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,
    Avez vous essayé le type ftDateTime ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parameters.CreateParameter('date', ftDateTime, pdInput, 0, now);
    Et utilisez la balise [ CODE ] (bouton #) plutôt que [ QUOTE ]...
    oui ça génère la même erreur puisque mon format et date abrégé mais merci comme même.
    Delphi XE8 Architect - Win 10

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Y a-t-il une fonction SQL intégrée à Access qui permette de convertir les dates stockées dans un autre format ?

    Sinon, il ne reste qu'à formater la date souhaitée pour qu'elle soit au format attendu par la base...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormatDateTime('mm/dd/yy', Now) + ' 11:59PM'; // par exemple
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Autre chose que je n'ai pas précisé lors de mon 1° message

    N'utilisez pas CreateParameter comme vous le faites.
    Après la saisie de la requête SQL, un paramètre est déjà ajouté dans la liste.
    Un paramètre de trop est ajouté au tableau des paramètres.
    Utilisez plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with Parameters.ParamByName('date') do
    begin
      DataType := ftDateTime;
      Direction := pdInput;
      Value := StrToDate(date1.Caption);
    end;
    Philippe.

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Citation Envoyé par tourlourou Voir le message
    Sinon, il ne reste qu'à formater la date souhaitée pour qu'elle soit au format attendu par la base...
    Avec Access si l'on veut transmettre une date sous forme littérale, on peut utiliser ce format: #MM/DD/YYYY HH:NN:SS#.

    Soit par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql.Add('WHERE (tempsdefaults.Date1) = #' + FormatDateTime('mm/dd/yyyy hh:nn', Now) + '#');
    Sinon +1 avec la méthode proposée par Ph.B ci-dessus.

    @+ Claudius.

  7. #7
    Membre actif Avatar de liazidf
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2002
    Messages : 281
    Points : 261
    Points
    261
    Par défaut
    salut,
    changer date par xdate, en sql date est un mot réservé.

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par adelcrb
    mon champ est de type de donnée Date/Heure format Date abrégé
    d'où ma proposition (abrégé comment ?)
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Points : 77
    Points
    77
    Par défaut
    j'ai finalement réussi a résoudre le problème

    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
    with rebut do
      begin
        sql.Clear  ;
        sql.Add('SELECT tempsdefaults.Date1');
        sql.Add('FROM tempsdefaults');
        sql.Add('WHERE (((tempsdefaults.Date1)=:lll));');
        with Parameters.ParamByName('lll') do
    begin
      DataType := ftDate;
      Direction := pdInput;
      Value := StrToDate(date1.Caption);
    end;
        Open;
     
        qt_NC.Caption := IntToStr(RecordCount);
      end;
    c'était dans la manière de créer le paramètre (Ph. B.)en plus j'ai changé date en III (liazidf) .
    tourlourou ==> date abrégé ça veut dire #MM/DD/YYYY #et non #MM/DD/YYYY HH:NN:SS#

    Cl@udius : merci pour l'information ça va beaucoup me servir puisque j'utilise sauvant access
    Delphi XE8 Architect - Win 10

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

Discussions similaires

  1. Sql*Loader - Champ date avec valeur nulle
    Par frglyon dans le forum SQL
    Réponses: 1
    Dernier message: 07/02/2014, 16h00
  2. Réponses: 2
    Dernier message: 08/07/2013, 13h39
  3. Champ Date avec SQL
    Par bastion dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/05/2007, 11h39
  4. clause sql sur champ Date avec masque de saisie
    Par TOMSEC dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/04/2007, 12h20
  5. Réponses: 6
    Dernier message: 10/08/2006, 15h45

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