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

 Delphi Discussion :

requete Update sur champ date vide


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut requete Update sur champ date vide
    Salut tous j'ai un petit problème sur une requête .J'ai un champ de type date dans ma table paradox que je rempli a l'aide d'un Maskedit avec un masque de saisi 01/12/2000.Si je veux le modifier avec une requête et que le champ n'est pas vite ok pas de problème, mais si il est vide j'ai une érreur
    ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DataModule1.Query1.SQL.Clear;
    DataModule1.Query1.SQL.Add('Update matable.DB set Mat = '+ QuotedStr(Mat.Text)
    +',Statut = '+ QuotedStr(Statut.Text)
    +',Sexe = '+ QuotedStr(Sexe.Text)
    +',Nom = '+ QuotedStr(Nom.Text)
    +',Date = '+ QuotedStr(Date.Text)
    +' where Idmatable ='+ QuotedStr(Id.caption)+'');
    DataModule1.Query1.ExecSQL;
    et il possible de faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DataModule1.Query1.SQL.Clear;
    DataModule1.Query1.SQL.Add('Update matable.DB set Mat = '+ QuotedStr(Mat.Text)
    +',Statut = '+ QuotedStr(Statut.Text)
    +',Sexe = '+ QuotedStr(Sexe.Text)
    +',Nom = '+ QuotedStr(Nom.Text)
    if Date.text<>'  ' then begin
    +',Date = '+ QuotedStr(Date.Text)
    end;
    +' where Idmatable ='+ QuotedStr(Id.caption)+'');
    DataModule1.Query1.ExecSQL;
    comment faire dans le cas d'un champ date vide .Merci de votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    je ne connais pas paradox

    mais si les contraintes de la colonne date indique qu'une valeur NULL (et non vide) est interdite, cela n'est pas etonnant que cela renvoie une erreur.
    Par ailleurs, un type de champ date est un "numerique" donc une valeur vide au sens chaine (une chaine ne contenant rien; mais pas NULL) n'est pas valide non plus.


    donc une valeur de date doit contenir une dates ou un NULL

    a+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut pas obligatoire
    Citation Envoyé par dehorter olivier Voir le message
    je ne connais pas paradox

    mais si les contraintes de la colonne date indique qu'une valeur NULL (et non vide) est interdite, cela n'est pas etonnant que cela renvoie une erreur.
    Par ailleurs, un type de champ date est un "numerique" donc une valeur vide au sens chaine (une chaine ne contenant rien; mais pas NULL) n'est pas valide non plus.


    donc une valeur de date doit contenir une dates ou un NULL

    a+
    dans ma table le champ n'est pas obligatoire .

  4. #4
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    donc il faut utiliser la syntaxe utilisant les NULLs (si cela existe sous paradox ?)

    a+

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut j'ai trouvé
    j'ai trouvé une petite astuce, j'ai simplement fais deux requête

    me requete principal j'ai retirer le champ date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DataModule1.Query1.SQL.Clear;
    DataModule1.Query1.SQL.Add('Update matable.DB set Mat = '+ QuotedStr(Mat.Text)
    +',Statut = '+ QuotedStr(Statut.Text)
    +',Sexe = '+ QuotedStr(Sexe.Text)
    +',Nom = '+ QuotedStr(Nom.Text)
    +' where Idmatable ='+ QuotedStr(Id.caption)+'');
    DataModule1.Query1.ExecSQL;

    et ma deuxieme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if Date1.Text<>'' then begin
    DataModule1.Query1.SQL.Clear;
    DataModule1.Query1.SQL.Add('Update matable.DB set Date1 = '+ QuotedStr(Date1.text)
    +' where Idmatable ='+ QuotedStr(Id.caption)+'');
    DataModule1.Query1.ExecSQL;
    end;
    merci tous le problème est résolu

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut re probleme
    Avec ma requête impossible de supprimer une date ,pourtant dans ma table paradox il n'est pas oblige de remplir le champs.
    j'ai le message

    le proget a provoqué une classe d'exeption EDBEngineError avec le message 'Différence de type dans une expression'

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Par défaut
    Une bonne pratique a dopter est d'utiliser les parametres dans les requetes SQL, c'est plus rapide, permet d'eviter pas mal de problemes de securité et garde le code clair et facile a maintenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    with  DataModule1.Query1 do
      begin
      SQL.Clear;
      SQL.Add('Update matable.DB Set Date1 = :ParamDate Where Idmatable = :ParamIdmatable');
      ParamByName('ParamDate').DataType:=ftDate;
      ParamByName('ParamDate').value := NULL;
      if Date1.Text<>'' then ParamByName('ParamDate').AsDate := StrToDate(Date1.text);
      ParamByName('ParamIdmatable').AsString := Id.text;
      ExecSQL;
      end;

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut merci
    merci tous , votre aides est exceptionnel .Merci de vos réponces et de prendre le temps

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

Discussions similaires

  1. [Update] sur champ vide
    Par userB dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/06/2007, 10h22
  2. Requete sur champ Date
    Par kmaniche dans le forum C++Builder
    Réponses: 5
    Dernier message: 31/10/2006, 10h38
  3. Requete sur champ DATE MySQL
    Par tom06440 dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/09/2006, 17h45
  4. [SQL Server] Requete update sur 2 champs
    Par galou10 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/02/2006, 20h22
  5. champ date vide, requete
    Par w.b. dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 15/02/2005, 16h51

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