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 :

Erreur d'exécution '3075'


Sujet :

VBA Access

  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 Erreur d'exécution '3075'
    Bonjour à tous,

    Voilà cela fait 3 jours que j'essaie de trouver la solution à mon problème et je n'y arrive pas.

    J'ai une table nommée Constats qui comporte 2 champs : "ID_RNC" ( N° d'identification de l'incident ) et "Constats" ( description de l'incident ).

    Le N° d'incident ( ID_RNC ) est généré par une autre table comportant d'autres renseignements.


    Pour un même N° d'incident je peux avoirs plusieurs lignes dans ma table Constats.

    J'ai créé du code pour concaténer toutes ces lignes en une seule afin de les mettre dans ma table principale. ( voir code ci-dessous )

    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
    Function regroupeconstat()
    Dim db As Database
    Dim sql10 As String
    Dim Rs10 As DAO.Recordset
    Dim qfd10 As DAO.QueryDef
    Dim id10 As Variant
    Dim constat10 As String
    Dim constat20 As String
    Dim a As Variant
    Dim b As Integer
     
     
    DoCmd.SetWarnings False
     
    line31:
    a = a + 1
     
    Set qfd10 = CurrentDb.QueryDefs("Constats Requête")
    qfd10.Parameters("[Formulaires]![regroup]![RID]") = a
     
     
    Set Rs10 = qfd10.OpenRecordset
     
    If Rs10.BOF = True And Rs10.EOF = True Then GoTo line32
     
     
     
    Rs10.MoveFirst
    While Not Rs10.EOF
        With Rs10
           id10 = .Fields("ID RNC").Value
           constat10 = constat10 & Rs10.Fields("Constats").Value
        End With
     
        Rs10.MoveNext
     
    Wend
     
    sql10 = "UPDATE [Chrono] SET [Chrono].Constats = " & constat10 & " WHERE [Chrono].ID_RNC ='" & id10 & "'"
     
    DoCmd.RunSQL sql10
     
    GoTo line31
     
    line32:
     
    b = b + 1
    If b = 4 Then GoTo line33
    GoTo line31
    line33:
     
    End Function
    Lorsque j'exécute le code j'obtiens un message d'erreur ( le code s'arrête à DoCmd.RunSQL sql10 ).
    Le message est le suivant
    Erreur d'exécution '3075'. Erreur de syntaxe (opérateur absent ) dans l'expression 'La machine chauffe s'arrête fait du bruit WHERE [Chrono].ID_RNC='1".
    J'ai fait plusieurs essai en modifiant le code de la requête SQL toujours le même message.

    Quelqu'un a une idée sur mon problème ?

  2. #2
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Salut,

    à mon avis c'est dû à l'apostrophe (') que tu as dans ta chaîne de caractère.

    un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Replace("Rs10.Fields("Constats").Value, "'", "''")
    au moment où tu remplis constat10 devrait suffire

    si c'est autre chose, hésite pas

  3. #3
    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
    salut jimay,

    Je le mets où ton code ?

  4. #4
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    salut,

    à la place dans cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    constat10 = constat10 & Rs10.Fields("Constats").Value
    en fait si tu as une appostrophe dans ta requete SQL celà va la "couper", afin d'éviter ça il faut lui faire comprendre que cette apostrophe n'est pas la fin de la chaine de caractère mais juste une appostrophe. Après ça dépend des langages, en C, php et c++ je crois que c'est un \ en Access il faut juste doubler le caractère spécial, c'est à ça que sert la fonction Replace.


    a+

  5. #5
    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 jimay,

    j'ai un message d'erreur lorsque j'ai fini de taper ton code

    Erreur de compilation. Attendu : séparateur de liste ou ).
    .

    Tu as une idée ?

  6. #6
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    re,

    dans la ligne que je t'avais donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Replace("Rs10.Fields("Constats").Value, "'", "''")
    il y avait un " en trop au début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Replace(Rs10.Fields("Constats").Value, "'", "''")

    peut être ça

  7. #7
    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
    Eh non ce n'est pas ça.

    J'obtiens un autre message d'erreur
    Erreur de compilation. Attendu :=
    Quelle galère pour un" ' " qui embête le monde.

    Avec une valeur cela fonctionne bien et en récupérant les valeurs de la requête cela ne fonctionne plus

  8. #8
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Ettonant que tu ai une erreur..

    ton code ressemble bien à ça ?

    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
    Function regroupeconstat()
    Dim db As Database
    Dim sql10 As String
    Dim Rs10 As DAO.Recordset
    Dim qfd10 As DAO.QueryDef
    Dim id10 As Variant
    Dim constat10 As String
    Dim constat20 As String
    Dim a As Variant
    Dim b As Integer
     
     
    DoCmd.SetWarnings False
     
    line31:
    a = a + 1
     
    Set qfd10 = CurrentDb.QueryDefs("Constats Requête")
    qfd10.Parameters("[Formulaires]![regroup]![RID]") = a
     
     
    Set Rs10 = qfd10.OpenRecordset
     
    If Rs10.BOF = True And Rs10.EOF = True Then GoTo line32
     
     
     
    Rs10.MoveFirst
    While Not Rs10.EOF
        With Rs10
           id10 = .Fields("ID RNC").Value
           constat10 = constat10 & Replace(Rs10.Fields("Constats").Value, "'", "''")    End With
     
        Rs10.MoveNext
     
    Wend
     
    sql10 = "UPDATE [Chrono] SET [Chrono].Constats = " & constat10 & " WHERE [Chrono].ID_RNC ='" & id10 & "'"
     
    DoCmd.RunSQL sql10
     
    GoTo line31
     
    line32:
     
    b = b + 1
    If b = 4 Then GoTo line33
    GoTo line31
    line33:
     
    End Function

    a+

  9. #9
    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
    c'est encore moi

    J'ai copié collé in,tégralement ton code à la place du mien et j'obtiens le message d'erreur suivant :
    Erreur d'exécution 3075. Erreur de syntaxe (opérateur absent ) dans l'expression 'La machine chauffe s'arrête fait du bruit'.

  10. #10
    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
    enfin cela fonctionne.

    Merci de tes précieux conseils jimay.

    J'ai corrigé juste la fin du code.

    Pour ceux que cela intéresse voici le code complet
    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
    Function regroupeconstat()
    Dim db As Database
    Dim sql10 As String
    Dim Rs10 As DAO.Recordset
    Dim qfd10 As DAO.QueryDef
    Dim id10 As Variant
    Dim constat10 As String
    Dim constat20 As String
    Dim a As Variant
    Dim b As Integer
     
     
    DoCmd.SetWarnings False
     
    line31:
    a = a + 1
     
    Set qfd10 = CurrentDb.QueryDefs("Constats Requête")
    qfd10.Parameters("[Formulaires]![regroup]![RID]") = a
     
     
    Set Rs10 = qfd10.OpenRecordset
     
    If Rs10.BOF = True And Rs10.EOF = True Then GoTo line32
     
     
     
    Rs10.MoveFirst
    While Not Rs10.EOF
        With Rs10
           id10 = .Fields("ID RNC").Value
           constat10 = constat10 & Replace(Rs10.Fields("Constats").Value, "'", "''")   
     End With
     
        Rs10.MoveNext
     
    Wend
     
    sql10 = "UPDATE [Chrono] SET [Chrono].Constats = " & constat10 & " WHERE [Chrono].ID_RNC =" & id10 & ""
     
    DoCmd.RunSQL sql10
     
    GoTo line31
     
    line32:
     
    b = b + 1
    If b = 4 Then GoTo line33
    GoTo line31
    line33:
     
    End Function

  11. #11
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Bon bah bien joué ^^

    a++

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

Discussions similaires

  1. [AC-2010] Erreur d'exécution 3075
    Par redojackson dans le forum Access
    Réponses: 3
    Dernier message: 10/07/2014, 23h42
  2. [AC-2010] Erreur d'exécution 3075
    Par redojackson dans le forum VBA Access
    Réponses: 2
    Dernier message: 22/06/2012, 15h29
  3. [AC-2007] Erreur d'exécution 3075 recherche multi-critère Cafeine
    Par higins dans le forum IHM
    Réponses: 8
    Dernier message: 15/12/2010, 12h45
  4. Erreur d'exécution 3075
    Par erfindel dans le forum Access
    Réponses: 12
    Dernier message: 18/01/2007, 11h31
  5. [Apache Perl] Erreur à l'exécution de mes cgi
    Par GLDavid dans le forum Apache
    Réponses: 4
    Dernier message: 28/08/2004, 20h23

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