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 :

[A-07] Application plante sous xp et pas sous vista


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut [A-07] Application plante sous xp et pas sous vista
    Bonjour,

    Je viens de réaliser une petite application sous access 2007, je l'ai empaqueté.

    Je l'ai installée sur mon poste (vista), ça marche nikel. Je l'ai ensuite installée sur un poste sous XP avec le runtime 2007, l'installation marche bien mais quand je la lance :
    - à l'ouverture, messages d'erreurs pour 2 dll manquantes. Pb réglé, j'ai rajouté les dll. J'en parle qd mm parce que ça peut être lié au reste.
    - mon joli icone a disparu
    - Au début ça marche bien et puis je ne sais pas pourquoi elle plante sur cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Ctc_Ville_AfterUpdate()
    Dim rst As New ADODB.Recordset
     
    Set rst = ReqSelect("SELECT Departement, Region FROM Ville WHERE Commune = '" & Me.Ctc_Ville & "'")
    Me.Ctc_Depart = rst(0).Value
    Me.Ctc_Region = rst(1).Value
    End Sub
    Et sur celle ci aussi :
    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
    Private Sub cmdVoir_Click()
    valCont = Me.Ctc_Ref
    Dim rst As New ADODB.Recordset
     
    Set rst = ReqSelect("SELECT * FROM Projets WHERE Proj_Contact = " & valCont)
    If rst.EOF Then
        If MsgBox("Il n'y a pas de projet enregistré pour ce contact, voulez vous en ajouter un maintenant ?", vbYesNo, "Pas de projet") = vbYes Then
            valCont2 = Me.Ctc_Ref
            DoCmd.OpenForm "Projet", , , , acFormAdd
        Else
            Exit Sub
        End If
    Else
        DoCmd.OpenForm "Projets", , , "Proj_Contact = " & valCont
    End If
     
    End Sub
    Le message c'est :
    Cette application a été arrêtée à cause d'une erreur d'exécution. Elle ne peut pas continuer et va être fermée.
    Ca le fait que ce soit un XP SP2 ou XP SP3. Je ne comprends pas d'où ça vient puisque ça marche très bien sous Vista et dans access 2007.
    Peut-être que ça vient du code mais je ne vois pas ce qui ne va pas.

    Si vous avez une idée, n'hésitez pas, merci d'avance...

  2. #2
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    salut ta fonction ReqSelect doit etre en cause : montre nous le code, pour pouvoir t'aider.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut
    Merci d'avoir jeté un œil, voici ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function ReqSelect(Requete As String) As ADODB.Recordset
    Dim con As New ADODB.Connection
    Dim Command As New ADODB.Command
     
    Set con = CurrentProject.Connection
    Set Command.ActiveConnection = con
    Command.CommandText = Requete
    Set ReqSelect = Command.Execute
     
    End Function
    j'avoue qu'avec mes connaissances je vois pas trop ce qui pourrait ne pas plaire à xp dans cette fonction....
    Merci

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Salut,
    Public Function ReqSelect(Requete As String) As ADODB.Recordset
    Dim con As New ADODB.Connection
    Dim Command As New ADODB.Command

    Set con = CurrentProject.Connection
    Set Command.ActiveConnection = con
    Command.CommandText = Requete
    Set ReqSelect = Command.Execute

    End Function
    Déjà c'est une pratique nécessaire de libérer les objets (connection, command ...) après les avoir utilisés :
    : ce qui est vérifiable dans la vie courante.
    "Always look at the bright side of life." Monty Python.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut
    C'est ce que je faisait avant avec un mais comme c'est une requête Select je n'arrive plus à lire le résultat de ma requête si je ferme le connexion. Donc je l'ai enlevé.

    Et il me semble que "nothing" va fermer la connexion entrer autre chose, non ?

    Peut-être que je fabule et que je peux avoir accès à mon recordset avec la connexion fermée.

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Les variables locales ont une portée limitées à la procédure
    et donc tu peux toujours en libérer les objets à la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function ReqSelect(Requete As String) As ADODB.Recordset
    Dim con As New ADODB.Connection
    Dim Command1 As New ADODB.Command
    
    Set con = CurrentProject.Connection
    Set Command1.ActiveConnection = con
    Command1.CommandText = Requete
    Set ReqSelect = Command1.Execute
    set Command1=nothing
    Set con =nothing
    End Function
    dautre part, nue déclaration comme celle-ci
    Dim Command As New ADODB.Command
    est à proscrire : c'est pas terrible de donner le nom d'un objet à une variable
    "Always look at the bright side of life." Monty Python.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut
    Merci pour les remarques, j'ai fait les modifications mais ça ne change rien mon appli plante toujours sous XP....

    D'autres remarques ?

  8. #8
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Et du coté des references :
    as tu vérifié si tu en avait une manquante ; la reference ADO notamment ?
    (en clair "Microsoft Active ..."

    "Always look at the bright side of life." Monty Python.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut
    Bon alors j'allais écrire un post pour dire que je l'avais dans sa version 6, et puis je me suis dis que je pourrais essayer avec la version 2.8. Et ça marche !!

    Merci beaucoup micniv, tu m'as mise sur la voie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Icone de l'application qui ne s'affiche pas sous XP
    Par ICR5_68 dans le forum Windows
    Réponses: 5
    Dernier message: 09/03/2015, 21h24
  2. Icône de l'application qui ne s'affiche pas sous XP
    Par ICR5_68 dans le forum Développement Windows
    Réponses: 0
    Dernier message: 08/03/2015, 13h47
  3. Application qui fonctionne sous Eclipse mais pas sous Tomcat
    Par stoner2008 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 16/09/2013, 12h14
  4. Réponses: 4
    Dernier message: 21/10/2010, 17h12
  5. Probème d'application qui ne se lance pas sous XP
    Par ivanleterrible dans le forum Windows XP
    Réponses: 4
    Dernier message: 26/05/2006, 18h22

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