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 averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    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 éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    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 180
    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 180
    Points : 84 970
    Points
    84 970
    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

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    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+

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

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    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