Probleme avec une Base de Donnée access

jbbordas87 Messages postés 49 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 2 mars 2006 - 28 sept. 2005 à 19:42
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 - 29 sept. 2005 à 16:08
bonjours, voila malgres mes deux solution j'ai toujours un problme pour me connecter a ma base de donnée.

Voici la premiere solution que j'avait fait:

j'ai mis dans mon form:
Call module1.ConnectionBase("C:\sonde_tps.mdb")


et j'ai crée se module:
Public cnx As New ADODB.Connection
Private URL_BASE As String

Public Sub ConnectionBase(ByVal CheminBase As String)

Dim ChaineConnection As String

If CheminBase <> vbNullString Then URL_BASE = CheminBase

On Error GoTo erreur

ChaineConnection = "provider=microsoft.jet.oledb.4.0;datasource=" & URL_BASE

cnx.Open ChaineConnection

Exit Sub

erreur:
If cnx.State Then cnx.Close
MsgBox "errueur de connection à votre base de donnée" & vbCrLf & URL_BASE, vbCritical
End Sub

le probleme c'set que l'orsque je lance mon porgramme, il me dit : errueur de connection à votre base de donnée.......

Puis ne trouvant pas de solution j'aire refait mon module et voila ce que ca donne:


Public Function ConnectionBase() As Boolean
'On Error GoTo Err_ConnStrait
Dim Cnx As New ADODB.connection
Dim strConn As String

ConnStrait = False

' Initialise la chaine de connexion
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\sonde_tps.mdb"


' vérifie que la connexion est bien fermée
If Cnx.State = adStateOpen Then
MsgBox "la connection etait ouverte:"
Cnx.Close
End If

' Connexion à la base de donnée
MsgBox "on se connecte:"
Cnx.Open ConnectionString:=strConn

' Attente jusqu'à la connexion effective
While (Cnx.State = adStateConnecting)
MsgBox "entrain de se connecter"
DoEvents
Wend

' Vérification des erreurs eventuelles ou attribution de la valeur "True" à la connexion
If Cnx.Errors.Count > 0 Then
MsgBox "erreur l'ors de l'atribution de la valeur true"
ConnStrait = False
Exit Function
Else:
MsgBox "la connection set ouverte:"
ConnStrait = True
End If
Exit Function

Err_ConnStrait:
MsgBox "erreur inconue survenue"
ConnStrait = False
Exit Function
End Function


bon alors qhand je lance mon programme voila ce qu'il s'affiche avec toutes les texbox que j'ai mise:

1er textbox: on se connect
2nd texbox: la connection est ouverte (il est passer dans la condition que tout c'est bie passer donc normalement ConnStrait doit etre =true)
la troisiemme textbox n'est pas sur ici, elle se trouve sur ma form principal et affiche la valeur de connstrait: Faux

Ma question est simple:
ma base de donner est elle connecter ou pas? et si oui pourquoi alors constraint me renvoi faux dans ma form prinsipal??? pour mon second exemple et pourkoi dans le premier j'ai se message d'erreur???

merci d'avance a ceux qu'ils veulent bien essayer de m'aider

bapt

7 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
28 sept. 2005 à 20:10
Salut, avant de te répondre plus précisément, je voudrais savoir si tu interroges 1 seule base ou plusieurs ? De là, 2 options possibles : ouvrir la ou les bases pendant toute la durée d'exécution du prog ou ne l' (les) ouvrir que lorsqu'on en a besoin. Perso, je pref la 2ème option mais ..

Ce que je fais en général :

dim cnn as new adodb.connection
dim rst as new adodb.recordset

cnn.open MaChaineDeConnexion

rst.open MaRequete1, cnn, ... 'options au choix
'récupération des données dans mon prog
rst.close

' le cas échéant :

rst.open MaRequete2, cnn, ... 'options au choix
'récupération des données dans mon prog
rst.close

'etc

cnn.close
set rst = nothing
set cnn = nothing

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
jbbordas87 Messages postés 49 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 2 mars 2006
28 sept. 2005 à 22:45
j'utilise qu'une seul base de donner dans ce cas recis.

J'essayerais ta metode demain matin

Merci beaucoup pour ta reponse.
0
cs_pcvesoul Messages postés 123 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 25 juillet 2007 1
29 sept. 2005 à 07:25
Moi, voila comment j'ouvre ma base (et je peux appeler la procédure 10 fois, pas de prob) :

Public Sub Ouverture(Num As Integer, Chemin As String, Base As String)


If Con(Num).ConnectionString <> "" Then
Con(Num).Close
Con(Num).ConnectionString = ""
End If


Con(Num).Provider = "Microsoft.jet.oledb.4.0"
Con(Num).Properties("Persist Security Info") = False
Con(Num).Properties("User ID") = "Admin"
Con(Num).Properties("Jet OLEDB:Database password") = "UserPass"
Con(Num).Properties("data source") = Chemin & "" & Base & ".mdb"
Con(Num).Open

End Sub
0
jbbordas87 Messages postés 49 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 2 mars 2006
29 sept. 2005 à 09:10
merci pcvesoul mais pourrais expliquer un peus les lignes

Con(Num).Properties("User ID") = "Admin"

Con(Num).Properties("Jet OLEDB:Database password") = "UserPass"

Con(Num).Properties("data source") = Chemin & "" & Base & ".mdb"

sont elle nessecaire si on a pas de mot de passe pour la connectin?



De plus comment appelle tu ta fonction d'ouvertur dans ta form.......



merci d'avance



Baptiste
0

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

Posez votre question
cs_pcvesoul Messages postés 123 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 25 juillet 2007 1
29 sept. 2005 à 09:24
Je vais t'avouer qu'expliquer le pourquoi et le comment de chaque ligne me dépasse un peu. Voici comment j'utilise cela :

Dans mon programme, si je souhaite ouvrir un fichier, j'execute la commande suivante :

Call Ouverture(1 , Chemin , Base)

où :

1 est le N° de connection de ta base : Con(1)
Chemin est le nom du répertoire où se trouve ta base
Base est le nom de ta base (sans l'extension MDB)

La procédure appelée est la suivante :

Public Sub Ouverture(Num As Integer, Chemin As String, Base As String)
Si cette connection est déjà utilisée, il la ferme avant.

If Con(Num).ConnectionString <> "" Then
Con(Num).Close
Con(Num).ConnectionString = ""
End If


Puis il ouvre la base

Con(Num).Provider = "Microsoft.jet.oledb.4.0"
Con(Num).Properties("Persist Security Info") = False
Con(Num).Properties("User ID") = "Admin"
Con(Num).Properties("Jet OLEDB:Database password") = "UserPass"
Con(Num).Properties("data source") = Chemin & "" & Base & ".mdb"
Con(Num).Open

Si ta base à un mot de passe, je te dirai comment faire.
End Sub
0
jbbordas87 Messages postés 49 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 2 mars 2006
29 sept. 2005 à 09:45
oki merci beaucoup
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
29 sept. 2005 à 16:08
juste une question jbbordas. tu disais que ta connexion avait l'air de s'etablir correctement c'est bien ca ?
et que ta variable connstrait est a faux dans ta form principale.

est ce que cela ne vient pas tout simplement d'un probleme de portée de ta variable ?

ou as tu declaré connstrait ?

essaie de mettre un point d'arret a la fin de ta foncitn de connexion pour voir la valeur de ta variable et tiens nos au courant :)
0
Rejoignez-nous