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

Requêtes et SQL. Discussion :

Champ oui/non et requête ajout


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 121
    Points : 96
    Points
    96
    Par défaut Champ oui/non et requête ajout
    Bonsoir à tous,

    Un tout petit pbe que je ne parviens pas à solutionner depuis plus d'une heure.

    Je dois ajouter des données dans une table via une requête SQL, elle fonctionne parfaitement pour les champs texte, numérique etc sauf pour les champs oui/non où lorsque j'ai une case à cocher active elle n'est pas ajouter dans ma table.
    Pourtant lorsque je fais le mode pas à pas je vois que ma variable = à Vrai mais la requête ne la mets pas dans ma table.

    Voici le 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Function ajoutcuratif()
    Dim db As Database
    Dim sql As String
    Dim Rs20 As DAO.Recordset
    Dim qfd20 As DAO.QueryDef
    Dim accu20 As String
    Dim respcu20 As String
    Dim id20 As String
    Dim delaicura20 As String
    Dim visacu20 As String
    Dim ok20 As Boolean
    Dim nok20 As Boolean
     
     
    DoCmd.SetWarnings False ' pour ne pas avoir de message a chaque ajout
     
    'code pour activer requête
    Set qfd20 = CurrentDb.QueryDefs("r_testacuratif")
     
    'paramètre : permet de prendre en compte le paramètre dans la requête
    qfd20.Parameters("[Formulaires]![f_temp2]![texte12]") = [Forms]![f_temp2]![Texte12]
     
     
    'ouvre le recordset basé sur la requête
    Set Rs20 = qfd20.OpenRecordset
     
    'Vérifie s'il y a des enregistrements dans le Recordset pour éviter message d'erreur
    If Rs20.BOF = True And Rs20.EOF = True Then GoTo line31
     
    'stocke le contenu du champ dans la variable
    id20 = [Forms]![f_temp2]![iddéfinitif]
     
    'stocke dans les variables les données de la table sélectionnée en fonction de la requête
    Rs20.MoveFirst
    While Not Rs20.EOF
        With Rs20
            accu20 = .Fields("ac_curative").Value
            respcu20 = .Fields("Resp_cura").Value
            delaicura20 = .Fields("Delai_cura").Value
            visacu20 = .Fields("Visa_cura").Value
            ok20 = .Fields("conforme").Value
                'exécute la requête d'ajout dans la table
                sql = "INSERT INTO [curatif](ID_RNC,ac_curative,Resp_cura,Delai_cura,Visa_cura,conforme) VALUES ('" & id20 & "', '" & accu20 & "', '" & respcu20 & "', '" & delaicura20 & "','" & visacu20 & "','" & ok20 & "' )"
                DoCmd.RunSQL sql
     
                'sql = "UPDATE [curatif] SET [curatif].conforme = '" & ok20 & "' WHERE [curatif].ID_RNC = " & id20 & ""
                'DoCmd.RunSQL sql
        End With
     
            Rs20.MoveNext
    Wend
    DoCmd.SetWarnings True
     
    line31:
    Rs20.Close  'on est propre on ferme ce qui a été ouvert
    Set Rs20 = Nothing
    End Function
    Ma variable doit bien être de type boolean ?
    Peut être un pbe d'écriture du code ?

    Un petit conseil serait le bien venu

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 121
    Points : 96
    Points
    96
    Par défaut
    J'ai modifié mon code de cette manière et cela fonctionne mais il me semble que je me suis compliqué la vie.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Function ajoutcuratif()
    Dim db As Database
    Dim sql As String
    Dim Rs20 As DAO.Recordset
    Dim qfd20 As DAO.QueryDef
    Dim accu20 As String
    Dim respcu20 As String
    Dim id20 As String
    Dim delaicura20 As String
    Dim visacu20 As String
    Dim ok20 As String
    Dim nok20 As String
     
     
    DoCmd.SetWarnings False ' pour ne pas avoir de message a chaque ajout
     
    'code pour activer requête
    Set qfd20 = CurrentDb.QueryDefs("r_testacuratif")
     
    'paramètre : permet de prendre en compte le paramètre dans la requête
    qfd20.Parameters("[Formulaires]![f_temp2]![texte12]") = [Forms]![f_temp2]![Texte12]
     
     
    'ouvre le recordset basé sur la requête
    Set Rs20 = qfd20.OpenRecordset
     
    'Vérifie s'il y a des enregistrements dans le Recordset pour éviter message d'erreur
    If Rs20.BOF = True And Rs20.EOF = True Then GoTo line31
     
    'stocke le contenu du champ dans la variable
    id20 = [Forms]![f_temp2]![iddéfinitif]
     
    'stocke dans les variables les données de la table sélectionnée en fonction de la requête
    Rs20.MoveFirst
    While Not Rs20.EOF
        With Rs20
            accu20 = .Fields("ac_curative").Value
            respcu20 = .Fields("Resp_cura").Value
            delaicura20 = .Fields("Delai_cura").Value
            visacu20 = .Fields("Visa_cura").Value
            ok20 = .Fields("conforme").Value
            If ok20 = "Vrai" Then ok20 = "1"
            nok20 = .Fields("non_conforme").Value
            If nok20 = "Vrai" Then nok20 = "1"
     
                'exécute la requête d'ajout dans la table
                sql = "INSERT INTO [curatif](ID_RNC,ac_curative,Resp_cura,Delai_cura,Visa_cura,conforme,non_conforme) VALUES ('" & id20 & "', '" & accu20 & "', '" & respcu20 & "', '" & delaicura20 & "','" & visacu20 & "','" & ok20 & "','" & nok20 & "' )"
                DoCmd.RunSQL sql
     
                'sql = "UPDATE [curatif] SET [curatif].conforme = '" & ok20 & "' WHERE [curatif].ID_RNC = " & id20 & ""
                'DoCmd.RunSQL sql
        End With
     
     
            Rs20.MoveNext
    Wend
    DoCmd.SetWarnings True
     
    line31:
    Rs20.Close  'on est propre on ferme ce qui a été ouvert
    Set Rs20 = Nothing
    End Function
    Quelqu'un peut me donner son avis ?

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 428
    Points : 20 007
    Points
    20 007
    Billets dans le blog
    67
    Par défaut
    Salut et bonne année,

    dans ta requête insert...ok20 est du type booleen

    donc
    ne serait-ce pas plutôt:


    @+

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 121
    Points : 96
    Points
    96
    Par défaut
    Bonjour User,

    J'avais déjà essayé cette solution mais lorsque que j'exécute le code en mode pas à pas il me demande une valeur pour ok20.

Discussions similaires

  1. [AC-2003] Requête mise a jour de champ Oui/Non
    Par wedge3112 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/10/2012, 20h06
  2. [AC-2003] Requête mise a jour de champ Oui/Non
    Par wedge3112 dans le forum Access
    Réponses: 0
    Dernier message: 26/10/2012, 09h30
  3. [AC-2007] Requête paramétrée, champ num, champ oui/non
    Par laurentz dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/06/2010, 16h33
  4. Requête avec date et champs oui/non
    Par MoonShadows dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/07/2007, 02h53
  5. Requête UNION avec champ Oui/non
    Par Mariboo dans le forum Access
    Réponses: 4
    Dernier message: 01/08/2006, 09h36

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