Erreur d'exécution '3704'

jbprogram Messages postés 30 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 11 mai 2011 - 4 janv. 2008 à 18:50
jbprogram Messages postés 30 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 11 mai 2011 - 24 janv. 2008 à 15:24
Salut

Mon programme est bien compilé et l'exécution ok, développé sous vb6 comme client et sous access 2003 comme base de données.

Au départ, ma bd est sécurisée par un mot de passe pour chaque utilisateur, ce mot de passe est géré par access 2003. Je tape le mot de passe qui est correct, à la validation il m'affiche le message d'erreur suivant:

Erreur d'exécution '3704':
"opération n'est pas autorisée si l'objet est fermé"

le code qui gère la connexion à la base:

Dim BooleenTrouve As Boolean
'******************

'Déclaration des variables générales
Option Explicit
Dim cnnADO As New ADODB.Connection
Dim cmdADO As New ADODB.Command
Dim rsADO As New ADODB.Recordset

Private Sub connexion_Click()
Dim strDroits As String
Dim strNomUtilisateur As String
Dim a As String
Dim ab As String
Dim b As String

NomUtilisateur.Text = Trim$(NomUtilisateur.Text)
strNomUtilisateur = NomUtilisateur.Text

'*************************************************
'La recherche :
'*************************************************


'Recherchons le nom d'utilisateur dans la table
If NomUtilisateur.Text <> "" Then BooleenTrouve = False
Do While Not (rsADO.EOF Or BooleenTrouve)
If (StrComp(rsADO("NomUtilisateur"), strNomUtilisateur, vbTextCompare) = 0) Then
BooleenTrouve = True
Else
rsADO.MoveNext
End If
Loop
'Si le nom n'y est pas on affiche un message d'erreur
If Not BooleenTrouve Then
rsADO.Close
Set rsADO = Nothing
cnnADO.Close
Set cnnADO = Nothing
MsgBox "Nom d'utilisateur non valide !" + Chr$(10) + "Veuillez contacter l'administrateur du réseau.", vbOKOnly, "Impossible d'établir la connexion !"
Form_Load
Exit Sub
End If

'Si le nom est bon mais pas le mot de passe, on affiche un message
If Not (StrComp(rsADO("MotDePasse"), MotDePasse.Text, vbBinaryCompare) = 0) Then
rsADO.Close
Set rsADO = Nothing
cnnADO.Close
Set cnnADO = Nothing
MsgBox "Mot de passe erroné !" + Chr$(10) + "Essayez à nouveau ou contactez" + Chr$(10) + "l'administrateur du réseau.", vbOKOnly, "Impossible d'établir la connexion !"
Form_Load
Exit Sub
Else 'On affiche vos paramètres de connexion
strDroits = rsADO("ProfilUtilisateur")
a = "Utilisateur: " + strNomUtilisateur
ab = vbCrLf
b = "Connecté en tant que " + strDroits
MsgBox a + ab + b, vbOKOnly, "Connexion réussie !"
frmSplash1.Show
Unload Me
End If
End Sub


Private Sub Form_Load()
'******************************************
'Etablir la connexion avec la base
'******************************************
With cn
Set cn = New ADODB.Connection
cnnADO "Provider Microsoft.jet.oledb.4.0;data source = " & "\\Eecserveur\Ctr_Gst_Cfco\ContrôleDeGestion1.mdb;"
cnnADO.Open "Provider Microsoft.jet.oledb.4.0;data source " & "\\Eecserveur\Ctr_Gst_Cfco\ContrôleDeGestion1.mdb;"
'.......................................................
End With

'cnnADO.Provider = "Microsoft.jet.OLEDB.4.0"
'cnnADO.ConnectionString = "C:\Ctr_Gst_Cfco\ContrôleDeGestion1.mdb" 'Remplacer ici par l'adresse de la base
'Set cnnADO = New ADODB.Recordset
'cnnADO.Open "T_Access_BD", cn, adOpenDynamic, adLockOptimistic

'configurer la commande
cmdADO.ActiveConnection = cnnADO
rsADO.Open "T_Access_BD", cnnADO, adOpenDynamic, adLockOptimistic
End Sub

Private Sub Form_Terminate()
MsgBox "Réalisation Jean Baptiste BAVIBIDILA ©2007", vbInformation + vbOKOnly, "Ingénieur Informaticien "


End Sub

17 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
4 janv. 2008 à 22:06
Salut,

C'est un peu le cafouillage le code...lol....

Voilà ce que je te propose :

Dans un Module :

Option Explicit

' Déclaration object connexion, recordset
' et chaine pour construction requête
Public oCnxAdo As New ADODB.Connection
Public oRstAdo As New ADODB.Recordset
Public sSql As String

*******************************

Public Function OpenDataBase() As Boolean

         '* On la ferme avant
             Call CloseDataBase
   
         '* Choix du fournisseur
             oCnxAdo.Provider = "Microsoft.jet.OLEDB.4.0"
 
         '* chemin de la base pour la connexion
            oCnxAdo.ConnectionString = App.Path & "\ContrôleDeGestion1.mdb"
     
         '* Gestion erreur(s'il y a)
            On Error Resume Next
    
         '* Ouvre la connexion 
             oCnxAdo.Open 
     
        '* là on traite l'erreur, avec résultat en conséquence            OpenDataBase (Err.Number 0)
            If Err.Number Then Err.Clear
    
End Function


*******************************

Public Function Execute_Sql() As Boolean


    '* On ferme sans traiter erreur (s'il y en a une)
     On Error Resume Next
     oRstAdo.Cancel
     oRstAdo.Close
     Err.Clear


    ' *Execution requête avec paramètre recordset via CnxAdo
     oRstAdo.CursorLocation = adUseClient
     oRstAdo.Open sSql, oCnxAdo, adOpenDynamic, adLockPessimistic
    
    ' *gestion d'erreur     Execute_Sql (Err.Number 0)
     If Err.Number Then Err.Clear
    
End Function

*******************************


Public Sub CloseDataBase()

         '* Gestion des erreurs
            On Error Resume Next

         '* Libération ressource
            oRstAdo.Cancel
            oRstAdo.Close
            Set oRstAdo = Nothing
            oCnxAdo.Cancel
            oCnxAdo.Close
            Set oCnxAdo = Nothing
        
         '* Nettoyage gestionnaire d'erreur
            Err.Clear
    
End Sub

Dans ton Formulaire :

Private Sub Form_Load()

           '*Appel Function connexion à la base
             If Not OpenDataBase Then
                Dim sMsg As String
                Msg = "Problème survenu pendant l'accés à la base !" & VbCrlf & _
                           "Veuillez contacter votre administrateur !!!" & VbCrlf & VbCrlf
                MsgBox Msg, VbCritical Or VbOkOnly, "Erreur Connexion"
                Exit sub
             End If
           
           '* Connexion Ok
               MsgBox "Connexion établie !"

End Sub

*******************************

Private Sub Form_Terminate()
MsgBox "Réalisation Jean Baptiste BAVIBIDILA ©2007", vbInformation Or vbOKOnly, "Ingénieur Informaticien "
End Sub 

 Private Sub Connexion_Click()
            '*Verifie que les zones de texte soit remplies               If NomUtilisateur.Text vbNullString Or MotDePasse.Text vbNullString Then MsgBox "Veuillez remplir toutes les zones de texte !" : Exit Sub

            '*Préparation requête et execution              sSql "SELECT * FROM TaTable WHERE  NomUtilisateur '" & NomUtilisateur.Text & "' and MotDePasse = '" & MotDePasse.Text & "'"

              If Not Execute_Sql then
                  Dim sMsg As String
                  Msg = "Problème survenu pendant l'accés à la base !" & VbCrlf & _
                           "Veuillez contacter votre administrateur !!!" & VbCrlf & VbCrlf
                MsgBox Msg,"Erreur d'accés à la table", VbCritical Or VbOkOnly
                Exit sub
             End If

            ' *Maintenant on vérifie si pseudo et code existe dans le recordset
               With oRstAdo
                       '*Pour éviter l'erreur du mouvement
                          On Error Resume Next
                          .MoveLast
                          .MoveFirst
         
               If .BOF And .EOF Then
     
                      '*Affichage boîte de dialogue
                        Msgbox "Veuillez vérifier votre pseudo et ou code !"
                     
                      '*Place le focus
                        NomUtilisateur.SetFocus
        
                      '*on sort
                        Exit Sub
        
             End If
     
       End With

'* A partir d'ici tu fais ce que tu veux, car l'user est trouvé
.....
.......

End Sub

Note : Bout de code pas tester, mais devrait fonctionner..lol...  


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
4 janv. 2008 à 22:32
Oups...remplace tous les : Msg par sMsg

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
jbprogram Messages postés 30 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 11 mai 2011
5 janv. 2008 à 14:50
Merci, Lol..
enfin, c'est vraiment du cafouillage, j'avais oublié de le notifier en envoyant le code. Je vais remplacer mon code par le code et je verai la suite et vous donnerais la suite.


Merrci beaucoup.

Je suis très fanatique de





Les bases de la gestion de fichiers






Lundi 18 mars 2003


&
0
jbprogram Messages postés 30 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 11 mai 2011
7 janv. 2008 à 16:44
Salut Lol...
en essayant vos lignes de codes voilà comment le programme se comporte:

dès l'exécution du programme voilà en premier le message qu'il me présente:
 "Erreur d'exécution"
"Problème survenu pendant l'accès à la base!
"Veuillez contacter votre administrateur"

après avoir valider ce message d'erreur par ok
il me prénte en suite la boîte de dialogue qui définit l'accès à ma base. en rentrant les codes le message suivant s'affiche:

"Erreur d'accès à la table comme définit dant le programme.

or, je penses que ces messages devraient s'afficher si seulement ma base n'était pas disponible, ou en cas du mot de passe incorrect.

En suite l'erreur d'exécution qui s'affiche en premier ne signifie t-il pas que le code approprié  pour ouvrir la base ne travail pas?
je reprécises que ma base est access 2003.

Merci

Je suis très fanatique de
Les bases de la gestion de fichiers

Lundi 18 mars 2003

&
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 janv. 2008 à 20:30
Salut,

Est-ce qu'il t'ai possible de m'envoyer(à une adresse mail, que je te donnerai par MP), juste ta base pour que je puisse faire l'essai du code chez moi tranquille à tête reposée ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
jbprogram Messages postés 30 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 11 mai 2011
8 janv. 2008 à 09:55
Salut,

Tout d'abord un grand merci pour ce souci de m'aider très particulièrement. Je suis tout à fait d'accord et avec une entière confiance de ta part. J'attends votre mail comme ça je pourrai vous l'envoyer par pièce jointe.

S'en suivra des propositions pour un partenariat éfficace et solide.

A++

Je suis très fanatique de
Les bases de la gestion de fichiers

Lundi 18 mars 2003

&
0
jbprogram Messages postés 30 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 11 mai 2011
10 janv. 2008 à 15:43
Salut, lol...

Je viens de réussir de me connecter à ma bd, mais quand je saisis mon nom d'utilisateur et mon mot de passe qui sont correctes le message suivant s'affiche:

"Erreur de connexion à la table"
tu te rappelles que ce message tu l'a définis cela veut dire à mon avis que le code qui appelle ma boîte de connexion ne réagit pas: 
      sSql "SELECT * FROM T_Access_BD WHERE  NomUtilisateur '" & NomUtilisateur.Text & "' and MotDePasse = '" & MotDePasse.Text & "'"

Je me demande ce qui ne va pas en moi.

Je t'enverrai le programme après.

Merci

Je suis très fanatique de
Les bases de la gestion de fichiers

Lundi 18 mars 2003

&
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
10 janv. 2008 à 17:16
Salut,

Tu respectes bien les majucules ainsi que les minuscules dans la saisie de ton passe et de ton code...???

Envoie moi juste ta base, avec juste la table ou il y a les carractéristique de l'user.

Je me suis proposé de t'aider, mais pour faire l'essai correctement il me faut ta base...ou du moins dit moi de quel type sont tes champs dans ta table user, et leurs noms, et je ferais ma fois un essai avec un table que je ferais moi.

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
14 janv. 2008 à 11:24
Salut,

Bon je viens de télécharger ta source, et déjà il fauit enlever certaines déclarations :

Tu as déclarer plusieurs fois :

Public oCnxAdo, oRstAdo, sSql.....Une seul fois dans le module et cela suffit...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
14 janv. 2008 à 11:36
Re,

Puis faut respecter ce que je met(sauf erreur de ma part dans mon code) comme pour la requête :
 sSql "SELECT * FROM TaTable WHERE  NomUtilisateur '" & NomUtilisateur.Text & "' and MotDePasse ='" & MotDePasse.Text & "'"

Car tu l'as changer dans la source, c'est pour cela que la requête ne fonctionne pas et est null !!

Honnêtement, il y a du boulot à faire dans toutes ta source....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
14 janv. 2008 à 11:44
Prend aussi l'habitude de faire :

TextBox.Text = "CeQueTuVeux"

Et Non

TextBox = "CeQueTuVeux"

Idem pour tous les autres contrôles, s'ils ont des propriétés, ce n'ai pas pour rien..J'espère que tu comprends ce que je veux dire, ce sont des conseils...

Je le répète, tu as un gros boulot ç faire sur ta source, pour qu'elle soit lisible pour les personnes qui seraient vraiment débutants, car là il vont se perdrent bien comme il faut....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
17 janv. 2008 à 11:36
Salut,

Je reviens vers toi pour avoir des nouvelles....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
jbprogram Messages postés 30 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 11 mai 2011
18 janv. 2008 à 09:12
Salut,

En tout cas, cette fois-ci, j'ai été obligé de copier-coller la source que tu m'as envoyé, en faisant attention aux remarques qu tu m'as faites mais jusqu' là c'est la même chose. Ce qui est bizarre c'est que, il meparaît que la ligne SQL n'arrive pas à appeler ma boîte de connexion.

Je reprécise que je travail sur le vb6 et access 200. comme tu l'as remarqué. j'attends toujours la suite de ton aide. Dis moi aussi, est-ce chez toi ça fonctionne comme prévu?

De tempps à temps

merci!
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 janv. 2008 à 09:18
Salut,

Oui chez moi cela fonctionne bien, en enlevant toutes les déclarations en doubles, j'arrive bien à me connecté à ta base....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 janv. 2008 à 09:35
Salut,

Un petit conseil JbProgram, crée un projet vide avec seulement une form et un module, rajoute tes textbox avec le même nom, et refait l'essai avec le code donné, tu verras que cela fonctionne...


Bien cocher l aréférence : Microsoft ActiveX Data Objects 2.5  Library


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 janv. 2008 à 17:44
Salut,

Alors....?? Faché ?? Plus de nouvelles....cela fontionne ou pas ??

A+
Exploreur

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
jbprogram Messages postés 30 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 11 mai 2011
24 janv. 2008 à 15:24
Salut!
Non, je ne suis pas faché, ni contre vous, au contraire ça me réjouis cette façon de s'intérésser à moi.
 Je suis entrain de me casser le nez pour trouver la cause qui fait que ces codes ne fonctionnent pas chez moi, mais jusqu'à là, tout est normal dans la source, lmes petites erreures que tu avais pû remarquées ont été corrigés et soigneuseument. ma difficulté c'est que jamais j'ai travaillé avec sql dans mes bases donc! tu comprends bien que je suis très novice dans cette nouvelle méthode d'appeler ma table. Alors, je profite de te demander si avec l'ancienne méthode de me connecter à ma table étant donné que ça marchait bien sur le serveur, mais c'est quand j'installait sur les postes en mono que l'erreur spéficier s'affichait.

Y a t-il pas moyen d'utiliser l'ancienne méthode en corrigeant cette erreur?.

Merci pour l'aide
Je t'enverrai des nouvelles à continuté.

Je suis très fanatique de
Les bases de la gestion de fichiers

Lundi 18 mars 2003

&
0
Rejoignez-nous