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 :

Insertion de vide impossible dans champ date!


Sujet :

Langage SQL

  1. #1
    Membre actif
    Inscrit en
    Décembre 2007
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 528
    Points : 211
    Points
    211
    Par défaut Insertion de vide impossible dans champ date!
    Bonjour,

    je programme sous vb6 et access. Je n'arrive pas à mettre à jour les deux champs date (mais de type texte) de ma table contrat. En fait, je voudrai insérer du vide dans ces champs dates au cas où il s'agirai d'un contrat à durée indéterminée. la structure de ma table est :

    numcontrat, type texte
    datedebutcontrat, type texte
    datefincontrat, type texte
    numtypecontrat, type numérique
    numemp, type texte

    Voici ma première requête

    cn.Execute "update tablecontrat set numcontrat = '" & txtnumcontrat & "',datedebutcontrat='""',datefincontrat='""',numtypecontrat=" & x & " where numemp = " & txtcodeemp & ""

    Mais j'ai l'erreur suivante : "Type de données incompatible dans l'expression du critère"

    Ma deuxième requête est :

    cn.Execute "update tablecontrat set numcontrat = '" & txtnumcontrat & "',null,null,numtypecontrat=" & x & " where numemp = " & txtcodeemp & ""

    et là j'ai l'erreur "Erreur de syntaxe dans l'instruction UPDATE"
    Quelqu'un pourrait-il m'aider s'il vous plaît?

    Merci d'avance.

    Cordialement.

  2. #2
    jnore
    Invité(e)
    Par défaut
    Bonjour


    Pour ta première requete,il semblerait que ce soit le champ "numtypecontrat" qui doit être confronté à une variable qui n'est pas de type numérique.
    Ton "x" ne doit pas en être une.

    Quant à ta seconde requete, la syntaxe est fausse.
    Pour un update, on écrit de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE table set champ1=valeur1, champ2=valeur2, champ3=valeur3 
    WHERE champx=critere_de_filtrage.
    Regarde bien l'insertion de tes "null", n'est pas correcte.

    Autre chose, pourquoi ne paramètres-tu pas tes champs date par un type date?
    Tu les mets en format texte!!!

  3. #3
    Membre actif
    Inscrit en
    Décembre 2007
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 528
    Points : 211
    Points
    211
    Par défaut
    Salut jnore,

    Merci pour ton aide, j'ai essayé le datedebutcontrat=null mais j'ai toujours l'erreur 1.
    En fait, j'ai mis les dates de type texte parce que je pensais que le traitement serait plus facile et de plus je ne sais pas comment formater les dates en vb (pour ignorer l'heure,les minutes et les secondes) en jj/mm/aaaa uniquement et les insérer dans la table. Pourrais-tu m'aider en ce sens s'il te plaît? Merci d'avance.

    Cordialement

  4. #4
    jnore
    Invité(e)
    Par défaut
    Bonsoir

    Essaie d'épurer ta chaine de caractère.
    Pourquoi mets-tu des quotes entre tes guillemets?

    cela pourrait donner ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    cn.Execute "update tablecontrat set numcontrat = " & txtnumcontrat & ",datedebutcontrat=" & variable_date_debut & ",datefincontrat=null,
    numtypecontrat=" & x & " where numemp = " & txtcodeemp
    Essaie aussi de mettre ta requete dans une variable string et de faire un debug.print, cela te permettra de voir si ta syntaxe est bonne.

  5. #5
    Membre actif
    Inscrit en
    Décembre 2007
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 528
    Points : 211
    Points
    211
    Par défaut
    Salut jnore,

    j'ai enfin pu régler le problème en fait je n'avais pas de '' à la fin de la requête car en effet le type du " & txtnumemp & " ne correspondait pas. Je te remercie beaucoup pour ton aide. Par contre un problème demeure celui de l'incrémentation automatique. Voici ce que j'aimerai faire :

    vérifier dans ma table employe s'il y a au moins un enregistrement
    si non alors
    numemp = 1
    sinon
    numemp = dernier numemp + 1
    fin si

    NB:Avec numemp à présent de type numérique.

    J'ai déjà posté dans le forum sans trouver de solution adéquate. Merci d'avance de m'aider.

    Cordialement

  6. #6
    jnore
    Invité(e)
    Par défaut
    Salut,

    Il existe sous Access les "numéro auto", ne peux-tu pas te servir de cela?
    A chaque insertion, un numéro incrémenté de 1 se génère sur un champ clé. Est-cela que tu veux?

  7. #7
    Membre actif
    Inscrit en
    Décembre 2007
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 528
    Points : 211
    Points
    211
    Par défaut
    Salut jnore,

    je sais que sous access il y a la numérotation automatique, mais j'aimerai le faire manuellement, ça me fera croire que je suis intelligent . Non en fait, c'est pour mieux maîtriser ma programmation parce que j'ai un logiciel en projet où j'aimerai fusionner des bases de données et pour cela j'aurai besoin de concaténer des chaînes de caractère et des numéros incrémentés comme clés de ma table dans la base de données principale. Peux-tu m'aider s'il te plaît? Merci d'avance.

    Cordialement

  8. #8
    jnore
    Invité(e)
    Par défaut
    Avec Access, tu ne pourras le faire qu'avec VB.
    1) faire un test avant insertion pour connaitre la valeur de la clé précédente.
    2) insérér les données avec la nouvelle clé.

    Idéalement, il aurait fallu gérer cela avec un trigger(événement sur table), mais je crois que cela n'est pas possible avec l'extension .mdb.

    Sur un projet Access (adp) c'est possible mais il faut MSDE ou SQL server.

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

Discussions similaires

  1. Dynamics CRM2013 Heure par défaut dans champs date et heure
    Par VITALTH dans le forum Microsoft Dynamics CRM
    Réponses: 2
    Dernier message: 21/10/2014, 10h27
  2. [AC-2010] Saut à la ligne impossible dans champ HTML
    Par clickandgo dans le forum VBA Access
    Réponses: 20
    Dernier message: 30/08/2013, 12h15
  3. Insertion retour à la ligne dans champ mémo
    Par PapouDomi dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/03/2011, 09h06
  4. insertion valeur true/false dans champ type bit
    Par bambino13 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/05/2009, 18h54
  5. Insertion auto resultat RTF dans champ OLE
    Par michou42 dans le forum Access
    Réponses: 3
    Dernier message: 26/09/2006, 11h53

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