Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problèmes avec 1 formulaire dans access [ Archives Visual Basic / VBA ] (Muramasa)

mercredi 25 janvier 2006 à 09:44:57 | Problèmes avec 1 formulaire dans access

Muramasa

Bonjour,

 J'ai un problème particulièrement  agaçant avec access. Quand j'essaie de vider une table(temp_seance) aux travers de code vba avec CurrentDb.Execute "DELETE * FROM [temp_seance];" , il m'affiche l'erreur suivante :
"Erreur d'exécution '3008' : la table 'temp_seance' est déjà ouverte en mode exclusif par un autre utilisateur, ou elle est déjà ouverte par l'interface utilisateur et ne peut pas être manipulée par programmation".
Je vous mets le code du formulaire(principal) et aussi le code du formulaire(seance_fin) qui ouvre "principal".
Si vous pouviez me dire pourquoi ça bug ou comment faire pour que ça fonctionne, merci.

Principal :

Private Sub fonct_assoc_AfterUpdate()
    Call update
End Sub
Private Sub fonct_ext_AfterUpdate()
    Call update
End Sub
Private Sub update()
    If fonct_assoc.Value = 6 Then ' Verifie si on affiche tous les associations
        If fonct_ext.Value = 6 Then ' Verifie si on affiche tous les extensions
            Forms![principal]![rq_finalbis subform].Form.RecordSource = "SELECT membre.nom_membre,              membre.prenom, membre.prevenu, membre.id_membre FROM fonction_assoc INNER JOIN membre ON fonction_assoc.id_fonction_assoc=membre.ID_fonction_assoc GROUP BY membre.nom_membre, membre.prenom, membre.prevenu, membre.id_membre;"  'affiche tout
        Else 'Si les fonctions exterieurs ne sont pas affichés
            Forms![principal]![rq_finalbis subform].Form.RecordSource = "SELECT membre.nom_membre, membre.prenom, membre.prevenu, fonction_ext.id_fonction_ext FROM fonction_ext INNER JOIN (fonction_assoc INNER JOIN membre ON fonction_assoc.id_fonction_assoc = membre.ID_fonction_assoc) ON fonction_ext.id_fonction_ext = membre.ID_fonction_ext WHERE (((fonction_ext.id_fonction_ext)=[Forms]![principal]![fonct_ext]));" 'affiche en fonction de fonct_ext
        End If
    Else ' pas assoc
        If fonct_ext.Value = 6 Then ' ext tous
            Forms![principal]![rq_finalbis subform].Form.RecordSource = "SELECT membre.nom_membre, membre.prenom, membre.prevenu, fonction_assoc.id_fonction_assoc FROM fonction_ext INNER JOIN (fonction_assoc INNER JOIN membre ON fonction_assoc.id_fonction_assoc = membre.ID_fonction_assoc) ON fonction_ext.id_fonction_ext = membre.ID_fonction_ext WHERE (((fonction_assoc.id_fonction_assoc)=[Forms]![principal]![fonct_assoc]));" 'affiche en fonction de fonct_assoc
        Else ' ext pas tous
            Forms![principal]![rq_finalbis subform].Form.RecordSource = "SELECT membre.nom_membre, membre.prenom, membre.prevenu, fonction_assoc.id_fonction_assoc, fonction_ext.id_fonction_ext FROM fonction_ext INNER JOIN (fonction_assoc INNER JOIN membre ON fonction_assoc.id_fonction_assoc = membre.ID_fonction_assoc) ON fonction_ext.id_fonction_ext = membre.ID_fonction_ext WHERE (((fonction_assoc.id_fonction_assoc)=[Forms]![principal]![fonct_assoc]) AND ((fonction_ext.id_fonction_ext)=[Forms]![principal]![fonct_ext]));" 'affiche en fonction des 2, séparéments
        End If
    End If
    DoCmd.RunMacro "actualiser"
End Sub
Private Sub fonct_assoc_Click()
    inviter.Value = False
    DoCmd.RunMacro "actualiser"
End Sub
Private Sub fonct_ext_Click()
    inviter.Value = False
    DoCmd.RunMacro "actualiser"
End Sub
Private Sub Form_Load()
    inviter = False
    DoCmd.RunMacro "raz_prevenu"
    fonct_ext.Value = 6
    fonct_assoc.Value = 6
DoCmd.Close acTable, "temp_seance" 'et la pourtant je demande la fermeture de la table "temp_seance"
    CurrentDb.Execute "DELETE * FROM [temp_seance];" 'access situe l'erreur à ce niveau
End Sub
Private Sub inviter_Click()
    DoCmd.SetWarnings False
    If inviter.Value = True Then
        If fonct_ext.Value = 6 Then
            If fonct_assoc.Value = 6 Then
                DoCmd.OpenQuery "mas_tous_v"
            Else
                DoCmd.OpenQuery "mas_tous_ext_v"
            End If
        Else
            If fonct_assoc.Value = 6 Then
                DoCmd.OpenQuery "mas_tous_assoc_v"
            Else
                DoCmd.OpenQuery "mas_invit_v"
            End If
        End If
    DoCmd.RunMacro "actualiser"
    End If
    If inviter.Value = False Then
        If fonct_ext.Value = 6 Then
            If fonct_assoc.Value = 6 Then
                DoCmd.OpenQuery "mas_tous_f"
            Else
                DoCmd.OpenQuery "mas_tous_ext_f"
            End If
        Else
            If fonct_assoc.Value = 6 Then
                DoCmd.OpenQuery "mas_tous_assoc_f"
            Else
                DoCmd.OpenQuery "mas_invit_f"
            End If
        End If
    DoCmd.RunMacro "actualiser"
    End If
End Sub

Seance_fin:
Option Compare Database
Private Sub confirm_AfterUpdate()

    If confirm.Value = False Then
    envoyer.Enabled = False
    Else
    envoyer.Enabled = True
    End If
End Sub
Private Sub envoyer_Click()
    'Créations des objets utiles
    Dim varOpen As String
    Dim varOpen2 As String
    Dim varOpen3 As String
    Dim objMail As Object
    Dim
MaBase As New ADODB.Recordset       'Création de l'objet permettant une interaction avec la BDD ouverte
    Set objMail = CreateObject("CDO.Message")   'Création de l'objet permettant de manipuler l'envoi d'email
    Dim result As VbMsgBoxResult
    Dim
result2 As Variant
    Dim
corpsMail As Variant
    Dim
result3 As Variant
depart:
        corpsMail = "Madame, Monsieur, Voici les informations utiles à notre prochaine rencontre."
        result3 = MsgBox("Voulez-vous laissez le corps du message par défaut ?" & vbNewLine & vbNewLine & "Le message par défaut est:" & vbNewLine & vbNewLine & """" & corpsMail & """", vbYesNo, "Envoi d'E-Mail")
            Select Case result3
                Case vbYes
                GoTo suite0:
            End Select              
        corpsMail = InputBox("Ecrivez le message voulu", "Envoi d'E-Mail")
suite0:
        MaBase.Open "Rsrtd", CurrentProject.Connection   'Connexion avec une requête de la BDD
        MaBase.MoveFirst    'Déplace le curseur sur la première ligne de la requête
        result2 = InputBox("Sélectionner le nombre de pièce jointe" & vbNewLine & "(Maximum 3;Minimum 0)") 'Boite de dialogue demandant le nombre de fichiers joints avec ses différents sorties
        If result2 = 0 Then GoTo suite:
        If result2 = 2 Then GoTo deux:
        If result2 = 3 Then GoTo trois:
        If result2 > 3 Then GoTo Erreur:
        If result2 < 0 Then GoTo Erreur:
suite1:
        varOpen = OpenIt() 'Définition de l'objet en tant que fonction
        objMail.AddAttachment varOpen 'Définit le fichier sélectionné comme fichier joint
suite:
        If varOpen = "" Then varOpen = "(Aucun fichier joint)"     
        result = MsgBox(varOpen & vbNewLine & varOpen2 & vbNewLine & varOpen3, vbYesNo, "Envoyer Emails avec ce(s) fichier(s) joint(s) ?")
            Select Case result
                Case vbNo
                GoTo fin:
            End Select 
        While Not MaBase.EOF    'Début de la boucle vérifiant toutes les lignes de la requête jusaqu'à la dernière ligne (End Of File)
            objMail.To = MaBase("email")     'Définition des différentes variables utile à l'envoi mail (A, Objet...)
            objMail.From = "Administrateur"
            objMail.Subject = "Informations AVFPI"
            objMail.TextBody = corpsMail
            objMail.Send    'Envoie les Mails
            MaBase.MoveNext 'Passe à la ligne suivante de la requête
        Wend
   MaBase.Close    'Après utilisation, fermeture de la connexion avec la BDD
   Set objMail = Nothing   'Vidage de l'objet de la mémoire
   Set MaBase = Nothing    'Vidage de la BDD de la mémoire
   MsgBox ("Messages envoyés avec succès")
   GoTo fin:
deux:
    varOpen2 = OpenIt2()    'Définit une autre variable pour chaque fichier joint
    objMail.AddAttachment varOpen2
    GoTo suite1:
trois:
    varOpen2 = OpenIt2()
    objMail.AddAttachment varOpen2
    varOpen3 = OpenIt3()
    objMail.AddAttachment varOpen3
    GoTo suite1:
Erreur:
blabla = MsgBox("Vous n'avez pas spécifié un nombre de fichier joint supporté par le programme" & vbNewLine & vbNewLine & "OU vous avez interrompu le programme en cours.", vbCritical, "Erreur")
GoTo fin:
'config:
        'Ces différentes propriété de l'objet objMail permettent d'utiliser la librairie CDO hors d'un serveur Exchange
        'objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "Adresse SMTP"
        'objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Identifiant"
        'objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Password"
        'objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port smtp
        'objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        'objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True Passer ou non par une connection SSL
        'objMail.Configuration.Fields.Update

fin:
    DoCmd.SetWarnings (off)
    DoCmd.Close acQuery, "update_seance", acSaveNo
DoCmd.Close acTable, "temp_seance", acSaveNo 'et la pourtant je demande la fermeture de la table "temp_seance"
    DoCmd.Close acForm, "seance_fin"
    DoCmd.OpenForm "principal"
End Sub
Private Sub Form_Load()
    confirm.Value = False
    envoyer.Enabled = False
End Sub
Private Sub Commande7_Click()
    DoCmd.Close
    DoCmd.OpenForm "t_ajout_seance1"
End Sub
Private Sub confirm_Click()
    If confirm.Value = False Then
    envoyer.Enabled = False
    Else
    envoyer.Enabled = True
    End If
End Sub

Merci d'avance.
Muramasa

L'esprit n'a comme limite que celle que nous lui fixons. 

Le bonheur est tel le papillon, on croit l'attraper... il s'envole...



Cette discussion est classé dans : fonction, id, membre, ext, assoc


Répondre à ce message

Sujets en rapport avec ce message

problème avec la méthode find des recordset ADODB [ par piotr ] Bonjour... J'utilise ADODB pour un accès à une base Accès. J'ai écrit une fonction dont le rôle est de vérifier si un enregistrement existe et, le cas VBA access requette avec condition relative ds un fonction de formulaire [ par ADSL_le_faluchard ] Bonjour je suis débutant en VBA et confronter a un probleme que je n'arrive pas a resoudre seultou d'abort voila la fonction que j'ai ecrit :Function Pb de zone membre.php [ par darksmiling ] je suis débutant en terme de php et j'ai un petit probleme avec ma zone membre. Disons plus tôt que je ne sais pas comment faire quelque chose. Je tie VB Requête SQL INSERT INTO [ par jjg65 ] Chers membres, <p class="MsoNormal" style=" Requête INSERT INTO [ par jjg65 ] Chers membres, Je travaille a ID de tâche renvoyé par SHELL [ par PatriceVB ] Bjr, J'aimerais savoir comment utiliser l'ID de tâche renvoyé par la fonction SHELL afin de savoir si l'appli exécutée par cette fonction est toujours Syntaxe fonction [ par blowlagoon ] BonjourJ'ai une requete sous Access que j'essaye de lancer sous SQLServer2000 mais ca marche pa à cause de la fonction IIF. Voila à quoi ressemble ma Sortir d'une fonction a partir d'une autre [ par pioug43 ] J'aimerais pouvoir sortir d'une boucle infini en envoyant soit un mess d'erreur soit toute autre solution qui me permettrai de quitter la boucle a par appel d'une fonction par clic sur un lien web [ par dingchavez ] bonjourj'ai un soucis, je cherche à appeller une fonction lorsque sur une navigateur que j'ai crée en VB, je clique sur un lien.comment repérer l'evèn Write et fichier texte [ par DOMBUG ] Salut à tous !!!Actuellement j'écris dans un fichier texte avec la fonction Writemais cette fonction me génère systématiquement une double cote (") en


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.