Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VBA] Ensemble de problèmes

Problème de requete + Problème de fonction + Petite Question

Sujet résolu
    16 juillet 2020 à 15:02:30

    Bonjour à tous, 

    Ou Re-bonjour pour umfred x) 

    J'ai actuellement quelques petits problèmes avec mon code VBA qui ne marche pas bien (Sah quel plaisir d'être débutant :D) : 

    Problème n°1 : - J'ai actuellement une fonction permettant d'update une table s'appelant status pour savoir si l'utilisateur a déjà inséré le mot de passe admin ou non : 

    Private Function Updatedb(status As String)
    Dim Request
    Request = "UPDATE Motdepasse SET Motdepasse.[status] = " & status
    DoCmd.RunSQL (Request)
    End Function

    Or celle-ci ne marche puisqu'elle me demande d'entrer une valeur en tant que paramètre, j'ai déjà mené des recherches et je n'ai rien trouvé par rapport au mois d'éviter cette demande et forcer l'insertion : 

    Sub où est utilisé la fonction : 

    Private Sub Commande9_Click()
    Dim Count As Integer
    If VerifForm() Then
    DoCmd.Maximize
    DoCmd.ShowToolbar "Menu Bar", acToolbarYes
    DoCmd.ShowToolbar "Database", acToolbarYes
    DoCmd.ShowToolbar "Relationship", acToolbarYes
    DoCmd.ShowToolbar "Ribbon", acToolbarYes
    Call DoCmd.SelectObject(acTable, , True)
    DoCmd.Close acForm, "Formulaire1"
    DoCmd.OpenForm "GESTION Service PSAV", DataMode:=2
    status = "admin" Updatedb (status)
    Else
        DoCmd.Beep
        MsgBox "Mauvais Mot de Passe"
        Call UpdateFailTab
    End If
    End Sub
    

    Problème 2 : 

    Même problème que le problème 1 la fonction demande une valeur en tant que paramètre or elle est déjà indiquée.

    La fonction permettant d'incrémenter la table : 

    Function UpdateFailTab()
    Dim rs As DAO.Recordset
    Dim db As Database
    Dim result As String
    Set db = CurrentDb
    requestSQL2 = "SELECT Motdepasse.[Count]FROM Motdepasse;"
    Set rs = db.OpenRecordset(requestSQL2)
    result = rs.Fields("Count").Value
    Request2 = "UPDATE Motdepasse SET Motdepasse.[Count] = "" result + 1"
    DoCmd.RunSQL (Request2)
    End Function

    - Problème 3 : 

    Existe t'il un évènement ou un moyen pour faire en sorte que lorsque l'utilisateur ferme la table (table de données) Access le redirige sur un Forms ? 

    Table Motdepasse : 


    Merci d'avance pour votre aide, :honte:

    Cordialement 

    Sunshio 

    • Partager sur Facebook
    • Partager sur Twitter
      16 juillet 2020 à 17:03:32

      Problème 1: il faut explicitement mettre des guillemets autour de status dans ta requête pour dire c'est du texte au SQL (je suppose que Status est de type nvchar() ou nchar() ou tout autre type de chaine

      Request = "UPDATE Motdepasse SET Motdepasse.[status] = """ & status & """"
      ou 
      Request = "UPDATE Motdepasse SET Motdepasse.[status] = '" & status & "'"


      problème 2: erreur de copier coller ? car il manque les opérateurs de concaténation

      Request2 = "UPDATE Motdepasse SET Motdepasse.[Count] = " &  result + 1

      count doit être de type entier en principe

      problème 3: cherche l'événement onClose ou Closing ou BeforeClosing (quelque chose qui contient Close)

      • Partager sur Facebook
      • Partager sur Twitter
        17 juillet 2020 à 9:30:02

        Salut umfred, 

        Merci encore de ton aide ca a bien marché 

        Cordialement Sunshio :D

        • Partager sur Facebook
        • Partager sur Twitter

        [VBA] Ensemble de problèmes

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown