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 :

Supprimer un enregistrement avec EXCEL VBA


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    production
    Inscrit en
    Janvier 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : production
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 21
    Par défaut Supprimer un enregistrement avec EXCEL VBA
    Bonjour à tous,
    je pilote des bases ACCESS avec EXCEL VBA et avec ma procédure (SQL) je n'arrive pas à supprimer mon enregistrement.
    voici mon code, merci de me dire ce qui ne va pas...
    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
    Sub SuppAffaireDetail()
    Dim Cnt As ADODB.Connection, Rst As ADODB.Recordset, MySQL As String
    Dim LaCo As String, LaDate As Date, LaRess As String, LeTemps As Date, Heure As Date
    Dim LeClient As String, Lentite As String, LePoste As String, LeService As String
     
    LaCo = CorrectJour.ListBox1.List(CorrectJour.ListBox1.ListIndex, 0)
    LaDate = CDate(CorrectJour.ListBox1.List(CorrectJour.ListBox1.ListIndex, 1))
    LaRess = CorrectJour.ListBox1.List(CorrectJour.ListBox1.ListIndex, 2)
    'LeTemps = CDate(CorrectJour.ListBox1.List(CorrectJour.ListBox1.ListIndex, 3))
    Heure = CDate(CorrectJour.ListBox1.List(CorrectJour.ListBox1.ListIndex, 4))
    'LeClient = CorrectJour.ListBox1.List(CorrectJour.ListBox1.ListIndex, 5)
    'Lentite = CorrectJour.ListBox1.List(CorrectJour.ListBox1.ListIndex, 6)
    'LePoste = CorrectJour.ListBox1.List(CorrectJour.ListBox1.ListIndex, 7)
    'LeService = CorrectJour.ListBox1.List(CorrectJour.ListBox1.ListIndex, 8)
     
    LaDate = Format(LaDate, "yyyy-mm-dd") '=============================Format date ACCES date du jour de travail
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set Cnt = New ADODB.Connection '..................................................On fixe la variable.....
    Set Rst = New ADODB.Recordset '...................................................On fixe la variable.....
    Cnt.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & URL_BASE & ";" '......On ouvre la connection à la base.....
    '----------Suppression dans la base Affaires_Details----------
    MySQL = "DELETE FROM Affaires_Details " & _
    "WHERE (Affaires_Details.N°_CO='" & LaCo & "') AND (Affaires_Details.Date_Fab=#" & LaDate & "#) AND (Affaires_Details.Ressources='" & LaRess & "') AND (Affaires_Details.Heure_Saisie=#" & Heure & "#) "
    Rst.Open MySQL, Cnt, adOpenStatic
    Set Rst = Nothing
    '----------Suppression dans la base Paniers----------
    'If LaCo = "TG023" Then
        'Set Rst = New ADODB.Recordset '...............................................On fixe la variable.....
        'MySQL = "DELETE FROM Paniers " & _
        '"WHERE (Paniers.Panier_Ress='" & LaRess & "') AND (Paniers.Panier_Date=#" & LaDate & "#) "
        'Rst.Open MySQL, Cnt, adOpenStatic
        'Set Rst = Nothing
    'End If
     
    Cnt.Close
    Set Cnt = Nothing
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    End Sub
    @+ et merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Le type de LaDate est Date, donc la ligne avec LaDate = format(LaDate,...) n'a aucun effet...

    Pour que ça fonctionne (peut-être!) , il faut mettre le Format ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...AND (Affaires_Details.Date_Fab=#" & Format(LaDate,"yyyy-m-d") & "#)...

  3. #3
    Membre averti
    Homme Profil pro
    production
    Inscrit en
    Janvier 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : production
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 21
    Par défaut Supprimer un enregistrement avec EXCEL VBA
    Bonjour Galoir,

    Malheureusement cela ne fonctionne pas, de plus dans toutes mes procédures (SQL) il faut absolument que le format Date soit sous forme "yyyy-mm-dd"
    cela fonctionne très bien pour les enregistrements ainsi que pour les requêtes de vérifications des journées de travail, il ne me reste plus que les suppressions

    Faut-il que je précise les champs utilisés après l'instruction "DELETE" ?

    @+ merci pour vos conseils...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ok, je me suis mal fait comprendre...

    Il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "WHERE (Affaires_Details.N°_CO='" & LaCo & "') AND (Affaires_Details.Date_Fab=#" & Format(LaDate, "yyyy-mm-dd")  & "#) AND (Affaires_Details.Ressources='" & LaRess & "') AND (Affaires_Details.Heure_Saisie=#" & Heure & "#) "
    A méditer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public Function testdate()
    Dim LaDate As Date, LaDateTxt As String
    LaDate = Date
    Debug.Print 1, LaDate
    LaDate = Format(LaDate, "yyyy-mm-dd")
    Debug.Print 2, LaDate
    LaDateTxt = Format(LaDate, "yyyy-mm-dd")
    Debug.Print 3, LaDateTxt
    End Function
    Seul la date n°3 est reconnue dans le SQL...
    Dernière modification par Invité ; 05/06/2017 à 15h58.

  5. #5
    Invité
    Invité(e)
    Par défaut
    de plus pour supprimer il faut partir d'une requete select qui contient les enr. à supprimer puis il faut faire rst.delete pour chaque ligne du select

    Tester d'abord sur une table de test car irreversible!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Le plus simple pour les requetes action est de passer par l'objet connection : Cnt.execute "DELETE..."

  7. #7
    Invité
    Invité(e)
    Par défaut
    bonjour,
    pour information sur MySql!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Affaires_Details.Date_Fab='" & Format(LaDate,"yyyy-mm-dd") & "')
    Nom : TesRd2.gif
Affichages : 814
Taille : 227,6 Ko
    Dernière modification par Invité ; 07/06/2017 à 13h17.

  8. #8
    Membre averti
    Homme Profil pro
    production
    Inscrit en
    Janvier 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : production
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 21
    Par défaut
    Bonjour à tous,

    merci pour vos réponses et j'en prends bonne note.
    @dysorthographie :
    mysql query browser a l'air d'être un bon outils, pensez-vous qu'il me soit utile pour parfaire mes connaissances en SQL?
    Quelle version choisir?

    Merci Galoir, vous avez été très clair.
    @+

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ma version est un peut vieille et je ne sais pas si elle est d'actualité avec les dernières versions mysql mais tu peux tester!

    https://mon-partage.fr/f/tgyHgmIr/

  10. #10
    Membre averti
    Homme Profil pro
    production
    Inscrit en
    Janvier 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : production
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 21
    Par défaut
    bonjour à tous

    Merci beaucoup, fichier téléchargé, je vois cela rapidement.

    @++ excel-lente journée

Discussions similaires

  1. [AC-2003] supprimer enregistrements avec code vba sql
    Par maclolo2 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/07/2012, 08h05
  2. exploiter fichier SAP avec Excel VBA
    Par toto92 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/03/2008, 13h27
  3. [MySQL] Supprimer un Enregistrement avec son ID
    Par toulousain3117 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 18/01/2007, 19h29
  4. erreur de conexion a une base de donneés access avec excel(vba)
    Par leo13 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/11/2006, 09h09
  5. stat avec excel vba
    Par winieloursonaub dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/09/2006, 19h44

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