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

VBA Access Discussion :

INSERT INTO avec une case à cocher


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut INSERT INTO avec une case à cocher
    Bonjour à tous,

    C'est mon premier post sur ce forum et je tiens a vous remercier pour le nombre de fois ou j'ai pu trouver des infos grace a vos nombreux sujets.

    Pour cette fois ci, je n'ai pas trouvé mon bonheur.
    Je souhaite rechercher dans une base client(1 colonne avec nom_client et 1 colonne avec case à cocher), les clients ayant comme caractere ceux saisi dans "NOM_CLIENT_RECHERCHE" (formualire).
    Ensuite je rappatrie cette liste dans une autre table avec la colonne conseil1(case à cocher) qui permet de savoir si ce client a une prestation particuliere.
    J'arrive bien a remonter le nom de mon client, mais pas la case à cocher qui ne s'enregistre pas.
    Il y a donc une erreur de synthaxe a cette requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO NORMALISATION_CLIENT (NOM_CLIENT,CONSEIL) VALUES (('" & CLIENT_TRACKER & "'), ('" & CLIENT_INFO & "'));"
    En particulier sur CLIENT_INFO qui est la case à cocher.

    A noter que cette valeur remonte bien, car avec le "MsgBox CLIENT_INFO, vbCritical, "SUIV+"" , le valeur vrai/faux est correcte.

    Voici ma fonction, ca devrait vous aider:

    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
     
    Private Sub TROUVER_CLIENT_Click()
     
    Dim dbs As Database
    Dim POINTEUR As DAO.Recordset
    Dim CLIENT_TRACKER As String
    Dim RECHERCHE As String
    Dim ID_RECHERCHE As Integer
    Dim CLIENT_INFO As String
     
    On Error GoTo myerror
     
    Set dbs = CurrentDb
     
    RECHERCHE = Me.NOM_CLIENT_RECHERCHE
     
    DoCmd.RunSQL "DELETE * FROM NORMALISATION_CLIENT;"
     
            sSQL = "SELECT * FROM LISTE_ZEN;"
            Set POINTEUR = dbs.OpenRecordset(sSQL, dbOpenSnapshot)
     
            While Not POINTEUR.EOF
            CLIENT_TRACKER = POINTEUR!firm  
            CLIENT_INFO = POINTEUR!conseil1
     
     
            If CLIENT_TRACKER <> "" Then
               If InStr(CLIENT_TRACKER, RECHERCHE) <> 0 Then
     
             MsgBox CLIENT_INFO, vbCritical, "SUIV+"
     
             DoCmd.RunSQL "INSERT INTO NORMALISATION_CLIENT (NOM_CLIENT,CONSEIL) VALUES (('" & CLIENT_TRACKER & "'), ('" & CLIENT_INFO & "'));"
     
            End If
            End If
     
            POINTEUR.MoveNext
                Wend
     
            Set POINTEUR = Nothing
     
        PauseTime = 1    ' Set duration.
        Start = Timer    ' Set start time.
        Do While Timer < Start + PauseTime
            DoEvents    ' Yield to other processes.
        Loop
     
    Me.Refresh
     
    myerror:
     
    If myerror <> 0 Then
        MsgBox "Anomalie n°" & CStr(Err.Number) & " " & Err.DESCRIPTION, vbExclamation, "BUSINESS+"
         Err.Clear
        End If
    End Sub
    J'espere avoir été claire.
    Merci d'avance!!!!
    Julia

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO NORMALISATION_CLIENT (NOM_CLIENT,CONSEIL) VALUES (('" & CLIENT_TRACKER & "'), (" & CLIENT_INFO & "));"
    Ça devrait marcher.

    • Pour les cases à coher (ou booléen) ou les nombres il ne faut pas de délimiteur.
    • Pour les dates le délimiteur est #
    • Pour les chaînes le délimteur est " ou '. Personnellement je préfère le " car il est moins fréquent dans les textes que '. Quand tu veux utiliser " dans une chaîne de caractères il faut doubler le ". Ex avec ton cas :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      DoCmd.RunSQL "INSERT INTO NORMALISATION_CLIENT (NOM_CLIENT,CONSEIL) VALUES ((""" & CLIENT_TRACKER & """), (" & CLIENT_INFO & "));"


    Note aussi que tu aurais pu tout faire avec une seule requête SQL d'insertion qui aurait fait l'équivalent de ta boucle de sélection ET l'insertion dans la table de destination.

    Avec l'éditeur de requête de Access ça ce fait assez bien même si on ne connait pas le SQL.

    A+

Discussions similaires

  1. Etat avec une case à cocher sur une requête difficile
    Par marcoO dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/01/2007, 14h21
  2. [VB.NET]Utiliser un INSERT INTO avec une VIew Access
    Par Ashleyriot dans le forum Accès aux données
    Réponses: 3
    Dernier message: 23/11/2006, 18h31
  3. insert into avec une date
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/11/2006, 22h08
  4. Affichage de nouveau champ de formulaire avec une case à cocher
    Par breizhgen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/09/2006, 21h46
  5. INSERT INTO avec une valeur numéroauto
    Par priest69 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 08/11/2005, 15h39

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