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

Langage SQL Discussion :

[SQL Serveur] Problème de condition (date) lors de la suppression de données


Sujet :

Langage SQL

  1. #1
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut [SQL Serveur] Problème de condition (date) lors de la suppression de données
    Salut a tous,
    je ne pratique pas assez régulièrement le langage SQL pour assez bien m'y connaitre, d'habitude j'arrive à m'en sortir mais la je seche completement et je n'ai pas réussi à trouver de docs pérméttant de résoudre mon problème.
    Je doit effectué une suppression de données dans une table, à la condition que la date dans le champs debut de ma table ne soit pas encore passé, le champs debut en question est de type DateTime, voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE
    FROM MaTable
    WHERE depart > 02/05/2006 14:30:00
    est voici l'erreur qui est affiché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Le projet ... a provoqué une classe d'exception EDatabaseError
    avec le message 'Le champ '30:00' est d'un type inconnu'.
    Ma requête est effectué par un programme que je developpe sous C++Builder 6. Pour moi l'erreur est que la ponctuation ':' est une commande SQL (je ne serai pas dire laquelle) est qu'il ne comprend pas les paramètre qui la suive.
    J'espère que vous serai résoudre mon problème.
    Merci d'avance.
    A plus

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    c'est quel SGBD ??

    il suffit peut etre de mettre des ' '

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE
    FROM MaTable
    WHERE depart > '02/05/2006 14:30:00'

  3. #3
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    J'ai Microsoft SQL Server 2000 Personal Edition

    J'ai déjà essayé les cotes, ca ne fonctionne pas.

  4. #4
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    DELETE
    FROM MaTable
    WHERE depart > convert(datetime,'02/05/2006 14:30:00',103)
    ???

  5. #5
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    J'essaye et je te dit quoi.

  6. #6
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    J'ai bien le résultat recu, mais il provoque tout de même une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur à la création du handle de curseur
    je ne sais pas si c'est une erreur de SQL ou de mon programme, je penche plutot pour une erreur SQL car j'utilise des composants du logiciel pour me connecter à la base.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Vos date doivent être IMPERATIVEMENT au format ISO court, c'est à dire :

    DELETE
    FROM MaTable
    WHERE depart > '20060205 14:30:00'


    A +

  8. #8
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Ca me fait toujours l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur à la création du handle de curseur
    de plus lorsque je met la date sous ce format, toute mes données sont supprimé alors qu'avec la fonction convert la condition été respecté malgré l'erreur ci dessus.
    J'espère que vous pourrai m'aider.
    A plus

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Rien à voir avec votre requête.

    Vous avez vraisemblablement invoquer une méthode "open" pour lancer la requête. S'agissant d'une requête de mise à jour (INSERT, UPDATE, DELETE) ces dernières ne renvoyant aucune ligne, l'activation du opne exécute l'ordre SQL et attend un résultat sous forme de table (CURSEUR). D'ou l'erreur que vous voyez.

    Il suffit d'invoquer une méthode de type "execute" au lieu du open.

    Mais comme il s'agit d'un problème de langage de programmation, pour en savoir plus postez dans le forum approprié.

    A +

  10. #10
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    effectivement, maintenant que tu me fait la remarque, je me souvient qu'il y a deux fonction distinct à appeler en fonction du type de reqûête.
    Merci beaucoup, ca m'été totalement sortie de la tête.
    A plus

  11. #11
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Bon, je n'ai plus l'erreur, mais ma condition de fonctionne plus, il me supprime toute les données a lieu de seulement celle que je veut.

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    fais un copié collé de TOUT ton code STP

    A +

  13. #13
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Voici mon code,

    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
    23
    24
    25
    26
    27
    28
    date = Now() ;  /*Enregistrement de la date et de l'heure courante
    dans la variable date qui est de type chaine de caractère*/
    /*Les lignes qui suivent, jusqu'a la fin de la boucle servent à definir
    le quart d'heure suivant le plus proche (00:00,00:15,00:30,00:45)*/
    date = RecodeMinute(date,0) ;
    date = RecodeSecond(date,0) ;
    DecodeTime(dureeJour,heure,minute,seconde,NULL) ;
    do{
      date = IncHour(date,heure) ;
      date = IncMinute(date,minute) ;
      date = IncSecond(date,seconde) ;
    }while(date < Now()) ;
    //Efface l'éventuelle requête prècedente
    DMChaineFlexible->QChaineFlexible->SQL->Clear() ;
    //Ajoute la première ligne de ma requête
    DMChaineFlexible->QChaineFlexible->SQL->Add("DELETE") ;
    //Ajoute la deuxieme ligne de ma requête
    DMChaineFlexible->QChaineFlexible->SQL->Add("FROM PDP") ;
    //defini la troisieme ligne, qui est la condition, de la requête
    inter = "WHERE depart > convert(datetime,'" ;
    inter = inter + date + "')" ;
    //Ajoute la troisieme ligne de ma requête
    DMChaineFlexible->QChaineFlexible->SQL->Add(inter) ;
    //Connect les composants à la base
    DMChaineFlexible->SChaineFlexible->Open() ;
    DMChaineFlexible->DBChaineFlexible->Open() ;
    //Execute la requête sur la base
    DMChaineFlexible->QChaineFlexible->ExecSQL() ;
    Voila j'espere que vous pourrait m'aider, le code est en C++
    A plus
    [edit] : cette requête est faite avec la fonction convert, mais j'ai déjà testé toute les requête que vous m'avez passé dans les postes prècedents.

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    placez un paramètre dans votre requête et utilisez les méthodes de passation de valeur dans les paramètres.

    En delphi (en dans la norme SQL) les paramètres dans les requêtes SQL se précise avec le caractère deux points.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Exemple :
    SELECT *
    FROM MaTable
    WHERE Macolonne = :param1 AND Colonne2 = 123
    Dès lors vous disposez du paramètres param1 en tant qu'objet dans un tableau de paramètrage de l'objet requête.

    Mais ça c'est de la programmation donc rien à voir avec ce forum.

    A +

  15. #15
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Je ne suis pas sur d'avoir bien compris l'histoire du paramètre (désolé), le paramètre serai un paramètre dans ma base? Si oui, comment je dois faire pour le modifier?
    Merci et désolé de ne pas avoir compris les paramètre (j'ai des fois un peu de mal avec le SQL)

  16. #16
    Expert éminent sénior

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Personne n'as de solution à mon problème ? Poutant pour moi c'été juste ma requête qui n'était pas bonne.

Discussions similaires

  1. [WD19] Probleme de date de Windev vers Sql Serveur 2012
    Par debutant18 dans le forum WinDev
    Réponses: 5
    Dernier message: 09/06/2015, 16h28
  2. [Sql serveur 2005]Concatener Date et Heure
    Par foxrol dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/04/2011, 19h24
  3. [SQL SERVEUR 2005] DATE DERNIERE RECONSTRUCTION
    Par Elessar dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/11/2007, 22h05
  4. Réponses: 6
    Dernier message: 21/06/2007, 16h26
  5. Pb sql loader condition date
    Par the_youpi dans le forum SQL*Loader
    Réponses: 3
    Dernier message: 03/05/2007, 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