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

VB 6 et antérieur Discussion :

Problème run time error '3001' sur un Update


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut Problème run time error '3001' sur un Update
    Bonjour, je galère depuis un petit bout de temps sur quelques lignes de code sans trouver de réponse. Sur un UPDATE de ma base de données, je me retrouve avec "run time error '3001': Les arguments sont de type incorrect, en dehors de limites autorisées ou en conflit les uns avec les autres."

    Voici mon 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
     
        If modif = True Then
            'création de la requète pour mise à jour de la base de données machine
            Set rst = New ADODB.Recordset
                stSQL = "UPDATE BaseDMO SET [NoteInter]=" & "'" & Text1.Text & "'" & "" _
                    & " WHERE [NumClient]= " & "'" & NumClient & "'" & "AND [DateInter]= " & "'" & Replace(Combo1.Text, "'", "''") & "'"
            Debug.Print stSQL
            'exécution de la requète
            rst.Open stSQL, Cnx
     
            modif = False
            CommandButton3.BackColor = &HFFFFFF
            CommandButton3.Caption = "Modifier"
            Label3.Caption = Text1.Text
            Text1.Visible = False
        End If
    J'ai donc une table BaseDMO avec les champs NoteInter, NumClient et DateInter et l'exécution s'arrête toujours sur la ligne rst.Open stSQL, Cnx
    et lorsque je regarde en mode Debug, les variables sont bien lu, les champs sont bon...

    Merci d'avance pour votre aide.
    Guillaume

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Les champs de ta table sont d quel type ?

  3. #3
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Citation Envoyé par pc75 Voir le message
    Les champs de ta table sont d quel type ?
    NoteInter est de type Mémo, et tous les autres sont de type Texte.

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Et que donne le résultat de :


  5. #5
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Résultat: "UPDATE BaseDMO SET [NoteInter]='Je viens de faire une intervention chez ce client.' WHERE [NumClient]= 'fef153'AND [DateInter]= '17/02/2015'"

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Dans le where, il te manque un espace avant le "AND [DateInter]= '17/02/2015'"
    Le champ "DateInter" est de quel type ?
    C'est une base Acess ?

  7. #7
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Citation Envoyé par pc75 Voir le message
    Dans le where, il te manque un espace avant le "AND [DateInter]= '17/02/2015'"
    Le champ "DateInter" est de quel type ?
    C'est une base Acess ?
    Je viens de réessayer avec un espace avant le "AND [DateInter]= '17/02/2015'" , j'ai vérifier en debug, et il y a bien un espace dans le résultat, mais j'ai toujours la même erreur.
    C'est effectivement une base Access et le champ "DateInter" est de type Texte.

  8. #8
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    A quoi ressemble l'enregistrement dans ta base de données qui correspond à [NumClient]= 'fef153' AND [DateInter]= '17/02/2015' ?

  9. #9
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Nom : 2015-02-18_163539.jpg
Affichages : 357
Taille : 42,2 Ko

    Voici une partie de ma table, je ne sais pas si c'est ce que tu voulais exactement.
    En fait, j'arrive bien à enregistrer ce que je veux dans chaque champs de ma table, mais lorsque je veux faire une modification avec un Update, c'est à ce moment que j'ai le message d'erreur. J'ai même essayé de ne rien mettre, de mettre juste quelques lettres, mais toujours pareil.

  10. #10
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Alors là !!!

    Si tu fais ça, ça passe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select BaseDMO.* from BaseDMO where [NumClient]= 'fef153' AND [DateInter]= '17/02/2015'

  11. #11
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select BaseDMO.* from BaseDMO where [NumClient]= 'fef153' AND [DateInter]= '17/02/2015'
    Si j'écris cette ligne, j'ai une erreur "Compil error: expected: case", de plus, tu n'as pas mis le champs NoteInter

  12. #12
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    J'ai une réunion dans 2mn. On pourra reprendre demain si tu n'as pas résolu le problème.

    ps : Tu exécutes le "select" sous access ou depuis VB ?

  13. #13
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Citation Envoyé par pc75 Voir le message
    J'ai une réunion dans 2mn. On pourra reprendre demain si tu n'as pas résolu le problème.

    ps : Tu exécutes le "select" sous access ou depuis VB ?
    Ok, pas de problème, je dois partir moi aussi. Tout le code s'exécute depuis VB6, access ne me sert que de base de données.
    Bonne soirée et à demain.
    Merci encore pour ton aide.

  14. #14
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 105
    Points : 16 627
    Points
    16 627
    Par défaut
    Salut

    De tête il me semble que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set rst = Cnx.Execute(stSQL , , adCmdText)
    rst.Close

  15. #15
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Suite à la réponse de ProgElect, voici un bout de code qui fonctionne

    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
        'création de la connexion
            Set Cnx = New ADODB.Connection
        'définition de la chaine de connextion
            Cnx.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\DMObd.mdb;" & "Jet OLEDB:Database Password=" & MDP & ";"
        'ouvre la base de données
            Cnx.Open
     
        If modif = True Then
            'création de la requète pour mise à jour de la base de données machine
            Set rst = New ADODB.Recordset
                stSQL = "UPDATE BaseDMO SET [NoteInter]=" & "'" & Text1.Text & "'" & "" _
                    & " WHERE [NumClient]= " & "'" & NumClient & "'" & " AND [DateInter]= " & "'" & Replace(Combo1.Text, "'", "''") & "'"
            Debug.Print stSQL
            'exécution de la requète
            Set rst = Cnx.Execute(stSQL, , adCmdText)
            modif = False
            CommandButton3.BackColor = &HFFFFFF
            CommandButton3.Caption = "Modifier"
            Label3.Caption = Text1.Text
            Text1.Visible = False
        End If
    Merci à pc75 et ProgElect

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/09/2014, 11h31
  2. [WD-2007] Problème "Run-time error 5152"
    Par srig974 dans le forum VBA Word
    Réponses: 2
    Dernier message: 27/08/2012, 18h50
  3. VB6 - Problème de compilation avec un Objet - Run-Time Error 91
    Par Hadware dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 18/12/2008, 21h13
  4. [Inno-Setup] Problème sur XP : Run-time error '429'
    Par lucas67 dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 27/07/2007, 08h47
  5. Run-time error '5':
    Par zazaraignée dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/01/2006, 13h53

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