Vba sur access

pixoune Messages postés 2 Statut Membre -  
 pixoune -
Bonjour
Je dois faire un projet sur access et utiliser vba.
Mais certaines formules ne fonctionnent pas et je ne comprends pas ce qui n'est pas correct.
Essentiellement pour les suppressions.
Merci de votre aide

3 réponses

  1. JeanGlaude2 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   21
     
    Bonjour,

    Peut-tu envoyer le code qui ne fonctionne pas ?

    Si ce que tu recherche et de supprimer un enregistrement je te propose cette fonction :

    Public Function Suprimmer()
    If (MsgBox("Voulez-vous vraiment supprimer à tout jamais cet enregistrement?", vbYesNo + vbCritical, "Prenez la bonne décision")) = vbYes Then
    DoCmd.SetWarnings False
    DoCmd.RunCommand acCmdDeleteRecord
    DoCmd.SetWarnings True
    Else

    End If

    End Function
    1
    1. pixoune Messages postés 2 Statut Membre
       
      supprimer un motif:


      Option Compare Database
      Option Explicit
      ' Les variables suivantes sont utilisables dans tous les sub et function de ce module



      Dim base As DAO.Database
      Dim resultatSql As DAO.Recordset
      Dim requeteSql As String
      Sub Initbase()
      Set base = CurrentDb()

      End Sub
      Function SuppressionMotif(LibelleMotif As Integer) As Integer

      ' Suppression d'un Motif
      Call Initbase
      SuppressionMotif = 0
      requeteSql = "Delete From MOTIF (LibelleMotif) values "
      requeteSql = requeteSql & "('" & LibelleMotif & "');"
      base.Execute (requeteSql)
      SupprimerMotif = base.RecordsAffected ' Renvoie le nb d'enregistrements modifiés
      Call CloseBase
      End Function


      supprimer un prof:
      Option Compare Database
      Option Explicit
      ' Les variables suivantes sont utilisables dans tous les sub et function de ce module
      Dim base As DAO.Database
      Dim resultatSql As DAO.Recordset
      Dim requeteSql As String

      Sub Initbase()
      Set base = CurrentDb()
      End Sub

      Function SuppressionProf(Nom As String, Prenom As String)

      ' Suppression d'un professeur
      Call Initbase
      SuppressionProf = 0

      requeteSql = "Delete From Professeur (nom, Prenom) values "
      requeteSql = requeteSql & "('" & Nom & "" & Prenom & "');"
      base.Execute (requeteSql)
      SuppressionProf = base.RecordsAffected 'Renvoie le nb d'enregistrements modifiés
      Call CloseBase


      End Function
      0
    2. pixoune
       
      supprimer un motif:


      Option Compare Database
      Option Explicit
      ' Les variables suivantes sont utilisables dans tous les sub et function de ce module



      Dim base As DAO.Database
      Dim resultatSql As DAO.Recordset
      Dim requeteSql As String
      Sub Initbase()
      Set base = CurrentDb()

      End Sub
      Function SuppressionMotif(LibelleMotif As Integer) As Integer

      ' Suppression d'un Motif
      Call Initbase
      SuppressionMotif = 0
      requeteSql = "Delete From MOTIF (LibelleMotif) values "
      requeteSql = requeteSql & "('" & LibelleMotif & "');"
      base.Execute (requeteSql)
      SupprimerMotif = base.RecordsAffected ' Renvoie le nb d'enregistrements modifiés
      Call CloseBase
      End Function


      supprimer un prof:
      Option Compare Database
      Option Explicit
      ' Les variables suivantes sont utilisables dans tous les sub et function de ce module
      Dim base As DAO.Database
      Dim resultatSql As DAO.Recordset
      Dim requeteSql As String

      Sub Initbase()
      Set base = CurrentDb()
      End Sub

      Function SuppressionProf(Nom As String, Prenom As String)

      ' Suppression d'un professeur
      Call Initbase
      SuppressionProf = 0

      requeteSql = "Delete From Professeur (nom, Prenom) values "
      requeteSql = requeteSql & "('" & Nom & "" & Prenom & "');"
      base.Execute (requeteSql)
      SuppressionProf = base.RecordsAffected 'Renvoie le nb d'enregistrements modifiés
      Call CloseBase


      End Function
      0
  2. benol3 Messages postés 718 Statut Membre 87
     
    Slt,

    As tu testé tes requêtes sql dans l'éditeur de requête ?

    Il me semble que la syntaxe d'un DELETE en access est :

    DELETE FROM tatable WHERE nomchamp = mavariable

    Par exemple, remplace

    requeteSql = "Delete From Professeur (nom, Prenom) values "
    requeteSql = requeteSql & "('" & Nom & "" & Prenom & "');"

    par

    requeteSql = "Delete From Professeur (nom, Prenom) where "
    requeteSql = requeteSql & "nom='" & Nom & "' and prenom='" & Prenom & "';"

    J'ai pas Access sous la main. donc y peut avoir des erreurs dans le code que je t'ai donné....
    0
    1. pixoune
       
      Bonjour
      merci de ton intervention mais ça ne fonctionne pas
      0
  3. Tessel75
     
    Bonsooir,
    Excusez-moi de m'introduire dans votre échange alors que je n'ai pas suivi depuis le début. Mais, est-ce que c'est une très bonne idée de supprimer des enregistrements sur une liste? Est-ce vraiment indispensable de procéder ainsi? Ne vaudrait-il pas 100 fois mieux avoir un champ de type Oui/Non pour permettre de sélectionner les présents lorsqu'on n'a besoin que de ceux là pour le travail que tu as à faire.
    Il faut toujours être très prudent quand on supprime des enregistrements, on ne sait jamais si on n'en aura pas besoin plus tard à un moment ou un autre. Surtout que que se casser la tête pour écrire un code VBA pour ça, on peut imaginer que tu vas t'en servir souvent.
    Bonne suite.
    0