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 :

Impossible d'effectuer une requète suppression d'un enregistrement [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut Impossible d'effectuer une requète suppression d'un enregistrement
    Bonjour,

    J'ai ce message Type incompatible dans le critère - Erreur d'execution 3464 ....J'ai beau changer String par Integer...ça ne fonctionne pas....
    Voici le code VBA..
    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
     
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
     
     
    Dim Num As String
     
     Num = Me.num_cmd.Value
     
                    Set oRst = oDb.OpenRecordset("SELECT * FROM Tble_demande WHERE Num_demande='" & Num & "'")
     
                   While Not oRst.EOF
     
                    oRst.Delete
     
                   oRst.MoveNext
     
                    Wend
     
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Que dois-je changer....?
    Merci de votre aide..

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,

    Le code en VBA n'est pas du pile ou face !

    Si le contenu de Me.num_cmd est numérique, le code sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Num As Integer
    Num = Me.num_cmd.Value
                   Set oRst = oDb.OpenRecordset("SELECT * FROM Tble_demande WHERE Num_demande=" & Num)
    Si le contenu de Me.num_cmd est du texte,il faut mettre le variable entre quotes et le code sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Num As String
    Num = Me.num_cmd.Value
                   Set oRst = oDb.OpenRecordset("SELECT * FROM Tble_demande WHERE Num_demande='" & Num & "'")
    Cordialement.

  3. #3
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 304
    Billets dans le blog
    15
    Par défaut


    À partir du blog de Fabrice CONSTANS (loufab) et cette proposition de marot_r, j'ai fait une réadaptation de votre code. Voici le code modifié :

    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
    Option Compare Database
     
    Private Sub BtnSupp_Click()
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
     
    Dim Num As String
     
     'Num = Me.Num_cmd.Value
     
               ' Set oRst = oDb.OpenRecordset("SELECT * FROM Tble_demande WHERE Num_demande= Me.Num_cmd;")
                   Set oRst = oDb.OpenRecordset("SELECT Num_demande FROM Tble_demande " & _
                   "WHERE Num_demande=Eval('Forms.frmDemande.Num_cmd');", dbOpenDynaset)
     
                    While Not oRst.EOF
     
                    oRst.Delete
     
                   oRst.MoveNext
     
                    Wend
     
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Me.Requery
    End Sub
    Exemple :
    Fichiers attachés Fichiers attachés
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 407
    Par défaut
    Bonjour.

    Quand c'est un nombre, il ne faut pas délimiteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM Tble_demande WHERE Num_demande=" & Num)
    Les règles pour les délimiteurs
    • Chaîne de caractères : Guillemet (") ou Apostrophe ('). Attention pour utiliser un guillemet dans une chaîne, il faut le doubler. Ex : WHERE TonChampTexte=""" & TaValeurTexte & """".
    • Nombres : Pas délimiteurs. Attention à la virgule (,) dans les nombres décimaux. elle peut être vue comme un séparateur d'arguments. En SQL la virgule est toujours un point (.).
    • Date : Dièse (#). Si tu es en environnement multilingue je recommande l'utilisation du format inversé qui évite toute ambiguïtéé. Ex : "#" & Format([TaDate], "yyyy\-mm\-dd") & "#".
    • Booléen : Pas de délimiteurs


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut
    Merci à vous....

    Merci marot_r pour les explications.. Les règles pour les délimiteurs.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/07/2007, 16h23
  2. Réponses: 2
    Dernier message: 26/10/2006, 19h32
  3. Comment effectuer une requête http post ?
    Par Turtle_fr dans le forum 4D
    Réponses: 10
    Dernier message: 07/09/2006, 01h25
  4. Réponses: 4
    Dernier message: 06/09/2006, 14h04
  5. Effectuer une requête
    Par Telemak dans le forum Bases de données
    Réponses: 23
    Dernier message: 19/06/2006, 13h28

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