PB avec module

Résolu
altozinzin Messages postés 54 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 mai 2011 - 23 mai 2007 à 10:38
altozinzin Messages postés 54 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 mai 2011 - 23 mai 2007 à 11:51
Salut, j'ai un petit problème avec mon module.
Je veux faire une base de données access, et comme je compte utiliser souvent la connection j'ai créé un module (module1).
Voici mon code de form1:

<hr size="2" width="100%" /> Command1_Click()
    Call Module1.seconnecter
    Dim enreg As ADODB.Recordset
    Set enreg = New ADODB.Recordset
    enreg.Open "select nom, prenom from table1", data, adOpenDynamic, adLockBatchOptimistic
    enreg.MoveFirst
    Label1 = enreg!nom & " " & enreg!prenom
    End Sub
<hr size="2" width="100%" />
et dans mon module:
<hr size="2" width="100%" />
Public Sub seconnecter()
Dim data As ADODB.Connection

Set data = New ADODB.Connection

data.ConnectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\test.mdb")
data.Open
End Sub
<hr size="2" width="100%" />
quand je lance l'application, j'ai "erreur 3001: "les arguments sont de type incorrect, en dehors des limites autorisées, ou en conflit les uns avec les autres"

Pourtant si je coupe la partie qui est dans le module et que je la colle de command1_click, ça marche nikel.
Merci d'avance.

7 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 mai 2007 à 10:48
Ou bien alors mettre data dans la definition du module et en variable public
soit
Option Explicit
'DAns le formulaire
Private Sub Command1_Click()
   Call Module1.seconnecter
   Dim enreg As ADODB.Recordset
   Set enreg = New ADODB.Recordset
   enreg.Open "select nom, prenom from table1", data, adOpenDynamic, adLockBatchOptimistic
   enreg.MoveFirst
   Label1 = enreg!nom & " " & enreg!prenom
End Sub<hr />
'DANS LE MODULE
Option Explicit
Public data As ADODB.Connection

Public Sub seconnecter()
   Set data = New ADODB.Connection
   data.ConnectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\test.mdb")
   data.Open
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
23 mai 2007 à 11:14
Salut, pour moi c'est soit

data.Provider = "Microsoft.Jet.OLEDB.4.0"
data.ConnectionString = "Data Source= c:\test.mdb"
soit
data.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\test.mdb"
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 mai 2007 à 10:46
Salut,
Ce qu'il faut que tu ai à l'esprit c'est que dans le cas ou tu mettes
Dim data As ADODB.Connection dans seconnecter et bien la variable data n'est connue et active QUE dans la procédure seconnecter. Donc c'est normal que cela ne fonctionne pas dans le cas du module et que cela marche lorsque tu place data dans command1_click

Tu peux soit déplacer, soit faire une fonction qui retourne une ADODB.Connection
@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
23 mai 2007 à 11:16
Ensuite, si c'est pour le recordset que ca fonctionne pas, remplace Dim par Public pour la déclaration de la connection
0

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

Posez votre question
altozinzin Messages postés 54 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 mai 2011
23 mai 2007 à 11:38
Merci, ça marche.

Sinon tant que j'y suis, j'aimerai protégé mon base par un mot de passe.
J'ai mis 0000
Dans mon module je tape
  
data.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\test.mdb", , "0000"

et la j'ai "Impossible de démarrer votre application. Le fichier d'information du groupes de travail est absent, ou ouvert en mode exclusif par un autre utilisateur"
Je sais je suis chiant, :-)
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 mai 2007 à 11:47
Salut,
Une seule question par topic normalement... en revanche n'oublie pas d'appuyer sur réponse acceptée sur le ou les posts qui t'ont aidé à le résoudre.
Merci d'avance

@+: Ju£i?n
Pensez: Réponse acceptée
0
altozinzin Messages postés 54 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 mai 2011
23 mai 2007 à 11:51
Ok, je repose une question alors.
Merci encore!!
0