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

DB2 Discussion :

insert de date null


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut insert de date null
    Bonjour,

    Je veux insérer des données dans un de mes fichiers en omettant de renseigner certains champs, notament une date.

    J'utilise en rpg une instruction sql directe (exec sql...end-exec). Je fais donc un insert classique en listant mais zones:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insert into maTable (monIde, DateCreation, Montant, personne)
    values (:monIde, :DateCreation, :Montant, :personne)
    J'ai une zone dateAnnulation qui devrait donc etre à null (puisque non renseignée) mais elle se met automatique à la date du jour.

    Cette zone est définie comme suit dans mon DDS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dateAnnulation         L                                      
                              COLHDG('Date' 'annulation')  
                              DATFMT(*EUR)
    J'essaie de lui passer null en valeur, ça plante.
    Quelqu'un pourrait me dire comment faire pour ne pas toucher à cette zone?

    Merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    Ajoute le mot clé ALWNULL sur la DDS de ta zone date ensuite repasse ton INSERT :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DTANNUL         L         ALWNULL
                              COLHDG('Date' 'annulation')  
                              DATFMT(*EUR)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Citation Envoyé par Mercure
    Ajoute le mot clé ALWNULL sur la DDS de ta zone date ensuite repasse ton INSERT :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DTANNUL         L         ALWNULL
                              COLHDG('Date' 'annulation')  
                              DATFMT(*EUR)
    Il n'y a pas moyen de passer null ou quelque chose d'équivalent dans le insert?
    Je voudrais insérer une date initialier à '01.01.0001' mais j'ai une erreur :
    Partie Année de la valeur Date ou Horodatage non comprise dans
    la plage admise.
    Cela vient-il de l'absence de ce mot clé?

    En fait je voudrais éviter de recompiler mon DDS et tous mes programmes l'utilisant...

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    Il faudrait savoir si c'est null ou une date que tu veux insérer ?
    En tout cas, c'est pas malin d'avoir mis DATFMT(*EUR) dans la définition de la zone et, si tu pouvais supprimer cette fonction de ton PF, ça n'en serait que mieux.

    Si je comprends bien, tu dois vouloir insérer la date 01.01.0001 en ayant fait appel à une session SQL par STRSQL. Est-ce que c'est çà ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Citation Envoyé par Mercure
    Il faudrait savoir si c'est null ou une date que tu veux insérer ?

    Si je comprends bien, tu dois vouloir insérer la date 01.01.0001 en ayant fait appel à une session SQL par STRSQL. Est-ce que c'est çà ?
    Je veux rien insérer du tout justement, quand je fais mon insert si je ne renseigne pas les zones dates en général, il met automatiquement la date du jour...Je voudrais que quand je m'occupe pas de cette zone, ben, il mette rien!

    Mon insert est dans un prog, par exec sql/end-exec (mais j'ai la meme chose si je copie/colle dans strsql)

    Citation Envoyé par Mercure
    En tout cas, c'est pas malin d'avoir mis DATFMT(*EUR) dans la définition de la zone et, si tu pouvais supprimer cette fonction de ton PF, ça n'en serait que mieux.
    Une petite explication?
    Je débute, donc, je reproduis ce qui existe...

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    Cette histoire de date m'intrigue un peu quand même.
    Regarde par DSPFD s'il n'y a pas un programme déclencheur (trigger) qui serait associé au fichier et qui mettrait la date du jour dans la date annulation lors d'un INSERT ?

    Quant à déclarer le format de la date dans le fichier, c'est inutile car les dates sont insérées dans les fichiers sous un format binaire géré par l'OS. Indiquer DATFMT(*EUR) n'est utile qu'à l'affichage pour avoir le format européen (sic) à l'écran, avec des points comme séparateurs. D'ailleurs, mets-toi sous STRSQL, fais F13 et change le format de date en *ISO ou *DMYpar ex. puis passe une SELECT sur le fichier. Tu verras que les zones définies en type date (L) apparaîssent maintenant au format ISO (2007-06-08) ou au format DMY (08/06/07) selon le format que tu as choisi pour affichage. Mêmes effets pour les clauses INSERT et UPDATE. Tu peux insérer une date au format ISO dans tes tables et la consulter à l'écran au format DMY.

Discussions similaires

  1. Insertion d'une date nulle dans une table
    Par Maxi-môme dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 04/07/2007, 10h52
  2. [Delphi & DBExpress ] Mettre un champs date à null
    Par falcon dans le forum Bases de données
    Réponses: 10
    Dernier message: 03/11/2004, 08h21
  3. 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
  4. recherche Date nulle dans une table
    Par lol_adele dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/04/2004, 14h06
  5. Insert Into + Date
    Par BoeufBrocoli dans le forum SQL
    Réponses: 10
    Dernier message: 13/08/2003, 11h23

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