jbprogram
Messages postés30Date d'inscriptionmardi 3 octobre 2006StatutMembreDernière intervention11 mai 2011
-
4 janv. 2008 à 18:50
jbprogram
Messages postés30Date d'inscriptionmardi 3 octobre 2006StatutMembreDernière intervention11 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
'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
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 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
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...
jbprogram
Messages postés30Date d'inscriptionmardi 3 octobre 2006StatutMembreDernière intervention11 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.
jbprogram
Messages postés30Date d'inscriptionmardi 3 octobre 2006StatutMembreDernière intervention11 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
&
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 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 ?
jbprogram
Messages postés30Date d'inscriptionmardi 3 octobre 2006StatutMembreDernière intervention11 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
jbprogram
Messages postés30Date d'inscriptionmardi 3 octobre 2006StatutMembreDernière intervention11 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
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 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.
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 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....
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 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....
jbprogram
Messages postés30Date d'inscriptionmardi 3 octobre 2006StatutMembreDernière intervention11 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?
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 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
jbprogram
Messages postés30Date d'inscriptionmardi 3 octobre 2006StatutMembreDernière intervention11 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