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

VB 6 et antérieur Discussion :

Erreur Automation:l'Objet invoqué s'est déconnecté de ses clients


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Points : 27
    Points
    27
    Par défaut Erreur Automation:l'Objet invoqué s'est déconnecté de ses clients
    Bonjour mes amis du forum,

    Voilà je suis arrivé à la fin de réalisation d'un petit programme de gestion de mon activité.
    L'application comporte deux forms, deux modules, un dataEnvironent, un
    datareport, un fichier.ocx et le fichier BD access.

    Sous l'éditeur VB6 tout fonctionne à merveille,mais quand je passe au .exe
    le form principal s'affiche tous ses éléments fonctionnent correctement,sauf le bouton recherche se trouvant sur le toolbar qui lance le show du form2 pour éléments de recherche.Je clique dessus l'erreur suivante apparue:
    Erreur Automation
    l'objet invoqué s'est déconnecté de ses clients
    erreur d'éxecution '-2147417848(80010108)'
    J'ignore l'origine de l'erreur et mes recherches sur le net n'ont pu solutionner mon problème. Encore une fois je sollicite votre aide.

    Merci.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    bonjour tout le forum
    je m’adresse à vous, en particulier Xylon, car je ne comprends pas pourquoi mon code (application) marche sans aucune erreur sur un autre PC , alors que sur mon pc portable lequel le code est réalisé ça ne marche pas pour ce bouton de recherche.

    merci et à bientôt.

  3. #3
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 645
    Points
    16 645
    Par défaut
    Citation Envoyé par alfadz Voir le message
    bonjour tout le forum
    je m'adrèsse à vous xylon
    .....

    Cela ne fait pas avancer les choses .....
    Pour t'aider il nous faudrait un peu de code, l'événement Click, du bouton recherche se trouvant sur le toolbar qui lance le show du form2 pour éléments de recherche, me semple un minimum.

  4. #4
    Membre actif
    Inscrit en
    Janvier 2011
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 112
    Points : 209
    Points
    209
    Par défaut
    _ Bonjour,

    _ Je ne peux qu'être honoré par cet appel, mais c'était déjà expliqué dans les derniers messages du fil Propriété ou Méthode non Géré par l'Objet! : si une vie antérieure me permet (parfois) une (relative) efficacité quand il s'agit du fonctionnement de base de VB, tout ce qui s'étend au-delà (notamment ce qui concerne les bases de données) m'est terre inconnue et de grand mystère.

    _ Heureusement, cela ne vous empêchera pas de trouver ici l'aide dont vous avez besoin.

    _ Bon courage à vous et bonne semaine à tous.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    bonsoir à tout le forum

    Je retourne à ProgElect qui m' a déjà aidé;

    Bonsoir Mr,

    Voilà j'ai codé le bouton de recherche avec de trois façons:
    1er Cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub MnuRechercher_Click()
    FrmRecherche.Show
    End Sub
    2eme cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub MnuRechercher_Click()
    Dim cnx as Connection
    Set Cnx=New ADODB.Connection
    FrmRecherche.Show
    End Sub
    3eme Cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub MnuRechercher_Click()
    Dim cnx as Connection
    Dim Rst as recordset
    Set Cnx=New ADODB.Connection
    Set Rst=New ADODB.Recordset
    'Etablir la connexion
    cnx.Provider = "Microsoft.Jet.Oledb.4.0"
    cnx.ConnectionString = App.Path & "\GCaisse.mdb"
    cnx.Open
    Rst.CursorLocation = adUseServer
    Rst.ActiveConnection = cnx
    FrmRecherche.Show
    End Sub
    Les trois codes sans résultats et la même Erreur.Que dois je faire autre? Merci

  6. #6
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 645
    Points
    16 645
    Par défaut
    Salut

    Merci d'avoir mis les bouts de code de tes différents essais.

    1° cas
    tout laisse penser que la connexion et l'ouverture d'une table est fait dans le Form FrmRecherche et là, on ne voit pas comment tu réalises la connexion ni l'ouverture de la table

    2° cas
    Ta variable Object de connexion est déclaré dans le Form du menu et tu veux l'utiliser dans le Form FrmRecherche, ce qui pose un problème de porté.

    3° cas
    Même problème de porté de variable, même punition

    Une solution, faire les déclarations cnx et Rst (Public) dans un module *.BAS

    Une autre solution, si la recherche et son affichage est fait dans le Form FrmRecherche, faire les déclarations dans celui-ci, établir la connexion et l'ouverture de la table (suivant le/les critère(s) de recherche) à la validation de ces critères par l'utilisateur.

    De plus, dans la sub MnuRechercher_Click() , il serait sûrement judicieux de faire un FrmRecherche.Show 1, FrmMenu plutôt qu'un simple .Show

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    bonsoir le forum

    Merci pour ton aide ProgElect

    Concernant le 1er Cas voici la connection que j'ai utilisé dans le module de Form1 FrmRecherche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim cnx As New ADODB.Connection
    Dim Rst As New ADODB.Recordset
    Dim Cmd As New ADODB.Command
    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
    Private Sub Form_Load()
    'Initialiser les combosdate à la date du jour
    DTPicker1.Value = Format(Now, "dd/mm/yyyy")
    DTPicker2.Value = Format(Now, "dd/mm/yyyy")
    'Etablir la connexion
    cnx.Provider = "Microsoft.Jet.Oledb.4.0"
    cnx.ConnectionString = App.Path & "\GCaisse.mdb"
    cnx.Open
    Rst.CursorLocation = adUseServer
    Rst.ActiveConnection = cnx
    Rst.Source = "SELECT * FROM Caisse"
    Rst.Open , cnx, adOpenStatic, adLockOptimistic, adCmdText
    CmbClient.Text = "Choisir un Nom"
    CmbClient.AddItem "Tous"
    'remplir les combobox
    While Not Rst.EOF
    CmbClient.AddItem (Rst!Nom_Client)
    Rst.MoveNext
    Wend
    Rst.MoveFirst
    Rst.Close
    Init_ListView
    lng = Me.Width
    lar = Me.Height    
    End Sub
    2 et 3ème Cas J'ai fais cecians un module standard
    'Déclaration de variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public cnx As New ADODB.Connection
    Public Rst As New ADODB.Recordset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Sub Etab_Connection()
    Cnx.Provider = "Microsoft.Jet.OLEDB.4.0"
    Cnx.ConnectionString = App.Path & "\GCaisse.mdb"
    Cnx.Open
    End Sub
    Dans le module de FrmRecherche
    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
    Private Sub Form_Load()
    Set GCaisse = Nothing
    Set Rst = Nothing
    'Initialiser les combosdate à la date du jour
    DTPicker1.Value = Format(Now, "dd/mm/yyyy")
    DTPicker2.Value = Format(Now, "dd/mm/yyyy")
    'Etablir la connexion
    Call Etab_Connection
    Rst.CursorLocation = adUseClient
    Rst.ActiveConnection = cnx
    Rst.Source = "SELECT * FROM Caisse"
    Rst.Open , , adOpenDynamic, adLockOptimistic, adCmdText
    CmbClient.Text = "Choisir un Nom"
    CmbClient.AddItem "Tous"
    'remplir les combobox
    While Not Rst.EOF
    CmbClient.AddItem (Rst!Nom_Client)
    Rst.MoveNext
    Wend
    Rst.MoveFirst
    Rst.Close
    Init_ListView
    lng = Me.Width
    lar = Me.Height
    'Cnx.Close
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub MnuRechercher_Click()
    FrmRecherche.Show 1,FrmACaisse
    End Sub
    Même problème l'Erreur perciste. je me suis dis peut être que le problème est causé par l'XP Prof de mon PC puisque l'application marche dans l'autre PC doté aussi d'XP Prof.Que Dites-vous? Merci beaucoup pour votre aide.

  8. #8
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 645
    Points
    16 645
    Par défaut
    Salut

    A essayer, pour avoir des chances de trouver ou cela ce passe, en lieu et place des lignes 6 à 12 dans le cas n°1
    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
        Dim MsG As String, SQL As String
        SQL = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\GCaisse.mdb;User Id=admin;Password=;"
        Cnx.CursorLocation = adUseClient: Cnx.Mode = adModeRead
        On Error Resume Next
        Cnx.open SQL
        If Err.Number <> 0 Then
            MsG = "Erreur N°" & Err.Number & vbCrLf _
            & "Description:" & vbCrLf & Err.Description & vbCrLf _
            & "Impossible d'ouvrire la BDs "
    	MsgBox MsG, vbCritical, "Erreur"
            Exit sub
        End If
        If Cnx.state = adStateOpen Then
            SQL = "SELECT * FROM Caisse"
            Rst.open SQL, Cnx, adOpenStatic, adLockPessimistic
            If Err.Number <> 0 Then
                MsG = "Erreur N°" & Err.Number & vbCrLf _
                & "Description:" & vbCrLf & Err.Description & vbCrLf _
                & "Impossible d'ouvrire la table "
                MsgBox MsG, vbCritical, "Erreur"
                Exit Sub
            End If
        End If
    Reste qu'il y a peut être un problème de droit d'accès suivant le statut de la session de windows sur le poste ou le code produit l'erreur.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    Bonsoir à tout le forum
    Salut Prog
    Merci pour ton code,je l'ai appliqué comme vous m'avez indiquez et ça marche ;
    néanmoins le même problème avec la même Erreur qui survient lors de l'évenement click du contrôle Bouton Option
    Mon code est le suivant:

    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
    Private Sub Form_Load()
    'Initialiser les combosdate à la date du jour
    DTPicker1.Value = Format(Now, "dd/mm/yyyy")
    DTPicker2.Value = Format(Now, "dd/mm/yyyy")
    'Etablir la connexion
    Dim MsG As String, SQL As String
        SQL = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\GCaisse.mdb;User Id=admin;Password=;"
        cnx.CursorLocation = adUseClient: cnx.Mode = adModeRead
        On Error Resume Next
        cnx.Open SQL
         If err.Number <> 0 Then
            MsG = "Erreur N°" & err.Number & vbCrLf _
            & "Description:" & vbCrLf & err.Description & vbCrLf _
            & "Impossible d'ouvrire la BDs "
        MsgBox MsG, vbCritical, "Erreur"
            Exit Sub
        End If
    CmbClient.Text = "Choisir un Nom"
    CmbClient.AddItem "Tous"
    'Requette pour charger le combobox CmbClient
    Rst.ActiveConnection = cnx
    Rst.Source = "SELECT DISTINCT [Nom_Client] FROM Caisse"
    Rst.Open , , adOpenStatic, adLockPessimistic, adCmdText
    While Not Rst.EOF
    CmbClient.AddItem (Rst!Nom_Client)
    Rst.MoveNext
    Wend
    Rst.MoveFirst
    Rst.Close
    Init_ListView
    lng = Me.Width
    lar = Me.Height    
    End Sub
    jusqu'ici s'est trés bien le form2 s'affiche pas de problème

    sur ce form2 J'ai deux boutons d'option (choix de recherche). L'evenement du bouton OptBDate marche pas de problème; celui du bouton OptBClient l'erreur reveint . le code concerné est le suivant:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Private Sub cmdRechercher_Click()
    'Recherche par rapport au Nom&Prénom
    On Error GoTo err
    Set cnx = Nothing
    Set Rst = Nothing
    'Etablir la connexion
    Dim MsG As String, SQL As String
        SQL = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\GCaisse.mdb;User Id=admin;Password=;"
        cnx.CursorLocation = adUseClient: cnx.Mode = adModeRead
        On Error Resume Next
        cnx.Open SQL
         If err.Number <> 0 Then
            MsG = "Erreur N°" & err.Number & vbCrLf _
            & "Description:" & vbCrLf & err.Description & vbCrLf _
            & "Impossible d'ouvrire la BDs "
        MsgBox MsG, vbCritical, "Erreur"
            Exit Sub
        End If
    'Recherche par mom
    If OptBClient.Value = True Then
    If CmbClient.Text = "Tous" Then
    Rst.Open "SELECT * FROM Caisse", cnx, adOpenDynamic, adLockOptimistic, adCmdText
    Rst.MoveLast
    Rst.MoveFirst
    'Recherche par Nom_Client
    Else
    Rst.Open "SELECT * FROM Caisse where Nom_Client='" & CmbClient & "'", cnx, adOpenDynamic, adLockOptimistic, adCmdText
    Rst.MoveLast
    Rst.MoveFirst
    End If
    End If
    If OptBDate.Value = True Then
    Dim DateDebut As Date, DateFin As Date
    DateDebut = DateValue(Format(DTPicker1, "dd/mm/yyyy"))
    DateFin = DateValue(Format(DTPicker2, "dd/mm/yyyy"))
    If DateFin < DateDebut Then
    MsgBox "Attention DateFin doit-être suppérieure à DateDébut", , "le Bon Voyqge)"
    End If
    ' on inverse les champs mois et jour a cause de l'inversion SQL
    DateDebut = Mid(DateDebut, 4, 3) & Left(DateDebut, 3) & Mid(DateDebut, 7)
    DateFin = Mid(DateFin, 4, 3) & Left(DateFin, 3) & Mid(DateFin, 7)
    Rst.Open " SELECT * FROM Caisse WHERE [DateJournée] >= #" & Format(DateDebut, "dd/mm/yyyy") & " # AND [DateJournée] <= #" & Format(DateFin, "dd/mm/yyyy") & " # ", cnx, adOpenDynamic, adLockPessimistic, adCmdText
    Rst.MoveLast
    Rst.MoveFirst
    End If
    ListView1.ListItems.Clear
     'Mise a jour de la listview
     For a = 0 To Rst.RecordCount - 1
        Set itmX = ListView1.ListItems.Add(, , Rst.Fields(1))
        itmX.SubItems(1) = Rst.Fields(2)
        itmX.SubItems(2) = Rst.Fields(3)
        itmX.SubItems(3) = Rst.Fields(4)
        itmX.SubItems(4) = Rst.Fields(5)
        itmX.SubItems(5) = Rst.Fields(6)
        itmX.SubItems(6) = Rst.Fields(7)
        itmX.SubItems(7) = Rst.Fields(8)
        itmX.SubItems(8) = Rst.Fields(9)
        Rst.MoveNext
     Next a
     'Rst.Close
    Dim k As Integer
    Dim Total As Currency
    With ListView1
         For k = 1 To .ListItems.Count
         Total = Total + .ListItems(k).ListSubItems(4).Text
         Next
         Tbox(9).Text = Format(Total, "# ##0.00")
         End With
     
    'Exit Sub
     
    err:
     If err.Number = 3021 Then Exit Sub
     End Sub
    Je clicke sur l'option recherche par nom(OptBClient) l'erreur apparait et elle me ferme l'application sans toucher à aucun autre controle c'est un calvaire comment faire? et merci Prog

  10. #10
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 645
    Points
    16 645
    Par défaut
    Salut
    Je tenterai ligne 27
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Rst.Open "SELECT * FROM Caisse where Nom_Client='" & CmbClient.List(CmbClient.ListIndex) & "'", cnx, adOpenDynamic, adLockOptimistic, adCmdText
    'ou bien
    Rst.Open "SELECT * FROM Caisse where Nom_Client='" & CmbClient.Text & "'", cnx, adOpenDynamic, adLockOptimistic, adCmdText
    Ligne suivante, je testerai If Rs.State = adStateOpen Then Exit subdans un premier temps, pour le debug.
    Pour infos, tes Rst.MoveLast et Rst.MoveFirst ne sont pas utiles.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    BONJOUR LE FORUM
    SALUT PROG.

    j'ai appliqué les deux tentatives et ça ne va pas;et si j'ajouterais le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Rs.State = adStateOpen Then Exit sub
    aucun affichage pour la selection de nom_client.
    merci

  12. #12
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 645
    Points
    16 645
    Par défaut
    Salut

    J'ai modifié et fait des commentaires, tu me diras si il y a amélioration.
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    Private Sub cmdRechercher_Click()
     
    If Rs.state = adStateOpen Then Rst.Close: Set Rst = Nothing 'theoriquement cela aurai dût être fait en fin de passage précédant
    If Cnx.state = adStateOpen Then Cnx.Close: Set Cnx = Nothing '??? pourquoi fermer la connexion à la BDs
     
    'Recherche par rapport au Nom&Prénom
    'On Error GoTo err '<-------- mauvaise habitude, mot reservé, pourquoi pas "GestErr"
    On Error Resume Next
     
    'Etablir la connexion <------------ dommage de faire une connexion à chaque recherche
    Dim MsG As String, SQL As String
    SQL = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\GCaisse.mdb;User Id=admin;Password=;"
    Cnx.CursorLocation = adUseClient: Cnx.Mode = adModeRead
    Cnx.Open SQL
    If err.Number <> 0 Then
        MsG = "Erreur N°" & err.Number & vbCrLf _
        & "Description:" & vbCrLf & err.Description & vbCrLf _
        & "Impossible d'ouvrire la BDs "
        MsgBox MsG, vbCritical, "Erreur"
        Exit Sub
    End If
     
    'Recherche par nom_Client
    If OptBClient.Value = True Then
        If CmbClient.Text = "Tous" Then
            'Tous
            SQL = "SELECT * FROM Caisse"
            'Rst.Open "SELECT * FROM Caisse", Cnx, adOpenDynamic, adLockOptimistic, adCmdText
            Else
            'Selection que d'un client
            SQL = "SELECT * FROM Caisse where Nom_Client='" & CmbClient.List(CmbClient.ListIndex) & "'"
            'Rst.Open "SELECT * FROM Caisse where Nom_Client='" & CmbClient.List(CmbClient.ListIndex) & "'", Cnx, adOpenDynamic, adLockOptimistic, adCmdText
        End If
    End If
     
    If OptBDate.Value = True Then
        Dim DateDebut As Date, DateFin As Date
        DateDebut = DateValue(Format(DTPicker1, "dd/mm/yyyy"))
        DateFin = DateValue(Format(DTPicker2, "dd/mm/yyyy"))
        If DateFin < DateDebut Then
            MsgBox "Attention DateFin doit-être suppérieure à DateDébut", , "le Bon Voyqge)"
        End If
        ' on inverse les champs mois et jour a cause de l'inversion SQL
        DateDebut = Mid(DateDebut, 4, 3) & Left(DateDebut, 3) & Mid(DateDebut, 7)
        DateFin = Mid(DateFin, 4, 3) & Left(DateFin, 3) & Mid(DateFin, 7)
        'Rst.Open " SELECT * FROM Caisse WHERE [DateJournée] >= #" & Format(DateDebut, "dd/mm/yyyy") & " # AND [DateJournée] <= #" & Format(DateFin, "dd/mm/yyyy") & " # ", Cnx, adOpenDynamic, adLockPessimistic, adCmdText
        SQL = "SELECT * FROM Caisse WHERE [DateJournée] >= #" & Format(DateDebut, "dd/mm/yyyy") & " # AND [DateJournée] <= #" & Format(DateFin, "dd/mm/yyyy") & "#"
    End If
     
    On Error Resume Next
    Rst.Open SQL, Cnx, adOpenDynamic, adLockPessimistic, adCmdText
    If err.Number <> 0 Then
        MsG = "Erreur N°" & err.Number & vbCrLf _
        & "Description:" & vbCrLf & err.Description & vbCrLf _
        & "Impossible d'ouvrire la table Caisse"
        MsgBox MsG, vbCritical, "Erreur"
        Exit Sub
    End If
     
    If Rst.state = adStateOpen Then
        If Rst.RecordCount >= 1 Then
            ListView1.ListItems.Clear
            'Mise a jour de la listview
            For a = 0 To Rst.RecordCount - 1
                Set itmX = ListView1.ListItems.Add(, , Rst.Fields(1))
                itmX.SubItems(1) = Rst.Fields(2)
                itmX.SubItems(2) = Rst.Fields(3)
                itmX.SubItems(3) = Rst.Fields(4)
                itmX.SubItems(4) = Rst.Fields(5)
                itmX.SubItems(5) = Rst.Fields(6)
                itmX.SubItems(6) = Rst.Fields(7)
                itmX.SubItems(7) = Rst.Fields(8)
                itmX.SubItems(8) = Rst.Fields(9)
                Rst.MoveNext
            Next a
            'Rst.Close  <----------------- ???? pourquoi ne pas fermer le recordset ici
            Dim K As Integer
            Dim Total As Currency
            With ListView1
                For K = 1 To .ListItems.Count
                    Total = Total + .ListItems(K).ListSubItems(4).Text
                Next K
                Tbox(9).Text = Format(Total, "# ##0.00")
            End With
            Else
            MsgBox "Aucun enregistrement disponnible pour le critère de selection", vbInformation
        End If
    End If
    'Exit Sub
     
    'err:
    ' If err.Number = 3021 Then Exit Sub
    End Sub

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    Bonsoir à tout le forum.
    Re Prog
    j'ai utilisé et au début du code pour écarter ce problème Erreur D'execution:cette opération n'est autorisée si lobjet est ouvert. Impossible d'ouvrir la table de la bds ) qui survient au 2eme click du bouton CmdRecherche.Je n'ai pas fermer le recordset ligne 76 de ton code parceque au click sur ligne de listview l'erreur ci dessu s'affiche mais avec l'objet fermer.
    Jai inséré ton code au complet ,à l'exécution apparrait ceci Erreur Objet Requis ligne 3 ,tu as raté la frappe de t (Rst au lieu de Rs) si non le code s'est bien déroulé à partir de l'IDE et en .exe il crashe toujours au click de cet OptBClient
    Donc le problème reste lui même mais je te remercie beaucoup.
    A bientôt

  14. #14
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 645
    Points
    16 645
    Par défaut
    .....
    si non le code s'est bien déroulé à partir de l'IDE et mais en .exe il crashe toujours au click de cet OptBClient
    .....
    As tu programmer quelque chose dans l'événement OptBClient_Click() et/ou dans OptBDate_Click() ?
    Le crashe se produit au clique sur un des boutons options ou au clique du bouton cmdRechercher ?
    Le problème survient de par l'executable, je serai tenté de penser que tu n'as pas les mêmes droits (hérités) depuis l'IDE VB6, surtout si tu es sous windows 7.
    A essayer, démares l'executable en "super" administrateur, bouton droit sur l'exe, "Exécuter en tant qu'administrateur", cela donne quoi ?, toujours le bug ?

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    bonnesoirée tout le monde
    Prog Rebonsoir
    je n'ai rien programmé dans les événements clicks des deux options sauf ce que tu as vu dans l'événement click du bonton CmdRecherche.
    le crashe est provoqué seulement dans l'événement click de OptBClient.
    celui de OptBdate pas de problème.
    Quant à l'ouverture par click droit du .EXE en tant qu'Administrateur voilà ce que j'ai reçu:Impossible d'ouvrir une session:
    Echec d'ouverture de session:restriction de compte utilisateur.Dase raisons possibles sont des mots de passe vides n'étant autorisés,des restrictions sur les heures d'ouverture de session ou une restriction de stratégie a été appliquée.

    J'ajoute que l'ouverture de session s'éxécute sans mot de passe .
    Merci beaucoup;

  16. #16
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 645
    Points
    16 645
    Par défaut
    Salut
    je n'ai rien programmé dans les événements clicks des deux options sauf ce que tu as vu dans l'événement click du bonton CmdRecherche.
    le crashe est provoqué seulement dans l'événement click de OptBClient.
    Un peu (beaucoup ) contradictoire cette indication .
    Mais je pense que tu as bien détecté que lors du clique sur le bouton "rechercher", si l'OptBClient.value = True, la condition provoque l'erreur dans l'utilisation de l'exe.
    Donc, sous le même windows XP Prof mais d'un PC à un autre l'erreur est déclenchée sur l'un, mais pas sur l'autre quand
    OptBClient.value = True.
    OptBDate.value = True, là pas d'erreur.
    Moi même j'ai du mal a maitriser/comprendre les droits d'accès suivant le statut d'ouverture de session windows.
    Se qui me trouble grandement, c'est que l'une ou l'autre des conditions déclenche l'ouverture de la même table "Caisse", se qui à priori fait que l'autorisation fait au sécessionniste windows pour la condition "date" et du même ordre que la condition "Client".
    Là, je sèche, si je me trouvai dans ton cas, je ne saurai pas solutionner non plus.
    La dernière manipulation que je tenterai, serai de faire un programme tout simple, un Form avec un bouton "rechercher", les 2 boutons Option et le Combo "Client".
    Je reprendrai le code "Load" pour remplir le combo "Client" et le code du bouton "rechercher" de Form2, sans toute la partie du "ListView1" bien sûr.

    A la place du remplissage de ce ListView, je coderai un MsgBox avec
    "Test Ok" & vbCRLf & "Nbr. d'enregistrement retourné: " & Rst.RecordCount
    avec ce mini projet je ferai un .exe, que je lancerai pour voire.
    Malheureusement cela sera sûrement un de mes derniers messages sur cette discussion, car si l'erreur survient toujours, je ne saurai pas plus t'aider

    Bon courage.

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    Bonjour à tout le forum

    Re_Prog
    Un peu (beaucoup ) contradictoire cette indication

    Oui tu as raison Prog l'évenement optBClient est programmé comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub OptBClient_Change()
      ListView1.ListItems.Clear
      CmbClient.Text = "Choisir un Nom"
    End Sub
    Cette sub qui a été perdu au fin fond de l'éditeur et retrouver aprés une longue recherche ligne par ligne sur tout le module de la feuille.
    j'ai suivi ce tu ma indiqué dans le dernier méssage ça a maché idem pour les cas précédants Merci Beaucoup pour toutes tes réponses claires et instructives.
    Reste que je n'ai pas compri comment cet évenement Change pourrait mettre en cause la connection de lobjet ,quel objet? et provoquer ainsi l'erreur?
    Merci .

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

Discussions similaires

  1. [XL-2007] Erreur Automation : L'objet invoqué s'est déconnecté de ses clients
    Par nanousik dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 06/11/2019, 15h22
  2. [AC-2003] erreur l'objet invoqué s'est déconnecté de ses clients
    Par crauwels dans le forum IHM
    Réponses: 0
    Dernier message: 30/08/2014, 13h05
  3. [XL-2010] Erreur Automation L'objet invoqué s'est déconnecté de ses clients
    Par forum2015 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 11/08/2014, 23h12
  4. Réponses: 8
    Dernier message: 07/03/2014, 12h58
  5. [XL-2002] erreur automation. L'objet évoqué s'est déconnecté de ses clients
    Par marcelisa2 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/01/2011, 11h04

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