Connexion a une base de données...particuliére.

AlicePabelle Messages postés 37 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 10 septembre 2007 - 8 juin 2007 à 09:51
AlicePabelle Messages postés 37 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 10 septembre 2007 - 8 juin 2007 à 11:46
Bonjour

Je réalise un projet  : un programme de gestion de BDD d'une base de données, qui sera, dans l'avenir, amené a être transferé.

Je devais réaliser le module de connexion. Personellement, j'utilisais tout simplement les 5-6 ligne de code pour se connecter avec ADO. ( cx.connection, cx.recordset....)

Visiblement, cela ne convient pas et on me demande de me connecter de la sorte :

____________________________________________

<small>Private Sub Form_Load()</small>

<small>Dim Valeur As String</small>
<small>'Enregistre l'emplacement de la BDD</small>
<small>    BDD_HDD = CStr(LIRE_INI("BDD"))</small>
<small>    If BDD_HDD = String(255, 0) Then</small>
<small>        Do</small>
<small>           
Valeur = InputBox("Quel est le chemin de la base de données contenant
les adresses ?", "Emplacement de la base de données")
</small>
<small>            Call Ecrire_INI("BDD",
Valeur)</small>
<small>            BDD_HDD =
CStr(LIRE_INI("BDD"))</small>
<small>        Loop Until Trim(BDD_HDD)
<> ""</small>
<small>    End If</small>

<small>'Ouverture de la base de données
</small>
<small>    Set BDD = New ADODB.Connection</small>
<small>    BDD.Provider =
"Microsoft.jet.oledb.4.0"</small>
<small>    BDD.ConnectionString = BDD_HDD</small>
<small>                   
_________________________________________________________

Heu pourquoi compliquer la tache en utilisant cette méthode ?

D'autre part, je ne comprends pas plusieurs élèments :

</small><small>    - BDD_HDD = CStr(LIRE_INI("BDD"))
    - L'appel de procedure. ( pourquoi une procedure d'écriture si c'est juste le module de connexion a la BDD ? )
    - Pour une Répeter... Jusqu'a ???

merci d'avance
</small>

6 réponses

Doc VB Messages postés 16 Date d'inscription vendredi 24 novembre 2000 Statut Membre Dernière intervention 20 juillet 2007
8 juin 2007 à 10:40
Salut,

On peut supposer que la personne qui te demande ça a de bonnes raisons de le faire(?).
<li><small>BDD_HDD = CStr(LIRE_INI("BDD"))
Ca signifie que la chaîne de connexion est destinée à être lue depuis un fichier de configuration.</small>
</li><li><small>L'appel de procedure. ( pourquoi une procedure d'écriture si c'est juste le module de connexion a la BDD ? )
En toute logique, si le fichier de configuration (utilisé précédemment) est vide, on demande à l'utilisateur les informations de connexions puis on les enregistre dans le fichier.</small>
</li><li><small>Pour une Répeter... Jusqu'a ???
Cela oblige l'utilisateur à saisir quelque chose. Il est si facile d'appuyer sur entrée machinalement sans avoir rien saisi. Donc la boucle s'assure que la chaîne de connexion n'est effectivement pas vide.
</small>
</li>Cette méthode n'est pas si compliquée en fin de compte, elle permet de prendre en compte le cas de l'installation de l'application sur une nouvelle machine en demandant alors la saisie des informations de connexion à la base de données lors du premier démarrage du programme.
0
AlicePabelle Messages postés 37 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 10 septembre 2007
8 juin 2007 à 10:52
Salut

tout d'abord, merci pour ta réponse.

Oui, j'imagine qu'il y a une bonne raison pour utiliser cette methode, même si je ne les connais, pas. bref, je suis obligé d'utiliser cette méthode.

A vrai dire, c'est la premiere fois que j'utilise cette méthode, j'ai donc encore un peu de mal :

- LIRE_INI heu je dois remplacer ca par quoi ? j'ai rien d'autre en rapport avec la connexion a la BDD a ce stade du projet.

- Qu'appel tu un fichier de configuration ? une connexion c'est juste....une connexion non ? qui y a t il a configurer ?

- donc si je resume, cette méthode sert a faire" :

" J'enregistre l'emplacement de la base de données, et j'ouvre le INI. S'il est vide, alors je le créer en faisant appel a une procedure, afin que l'utilisateur puisse la configurer.
Je m'assure qu'il la configure en mettant une Repeter, et j'ouvre la base de données "

C'est ca ?
0
Doc VB Messages postés 16 Date d'inscription vendredi 24 novembre 2000 Statut Membre Dernière intervention 20 juillet 2007
8 juin 2007 à 11:07
Ce que j'appelle un fichier de configuration c'est un fichier qui accompagne en général une application et qui sert à stocker les informations utiles à son bon fonctionnement (mais pas uniquement). Ce genre de fichier peut également servir à stocker les préférences de l'utilisateur et ainsi à les restaurer lorsqu'il redémarre l'application.
Son contenu peut ressembler à qq chose dans ce genre :
...
[connect CustomerDatabase]
Access=ReadWrite
Connect="DSN=AdvWorks"

[sql CustomerById]
Sql="SELECT * FROM Customers WHERE CustomerID = ?"
...

"LIRE_INI" est une fonction que tu dois pouvoir retrouver facilement sur ce site. Elle ouvre le fichier de configuration et regarde à l'intérieur la valeur associée à BDD pour l'affecter à ta variable BDD_HDD.

On peut supposer qu'après avoir installé ton programme sur un nouveau PC, ton fichier de configuration n'existe pas ou alors qu'il est vide. Dans ce cas ta variable BDD_HDD sera vide. C'est pourquoi alors on demande comment établir la connexion.
Par la suite et pour éviter de demander à l'utilisateur de saisir la chaîne de connxion à chaque lancement de l'application, on enregistre alors cette information dans le fichier de configuration.

Pour résumer, cette méthode sert à :
1) lire la chaîne de connexion dans le fichier INI
2) si la chaîne n'existe pas ou bien si elle est vide on demande à l'utilisateur de saisir l'information
  2b) on stocke la valeur dans le fichier INI
  2c) on s'assure que cette valeur n'est pas vide
3) on ouvre la connexion à la base de données
0
AlicePabelle Messages postés 37 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 10 septembre 2007
8 juin 2007 à 11:18
Hum, merci, grace a tes explications, je vois plus clairement la théorie du truc.

Bon par contre je dois t'avouer que dans la pratiquer je suis un peu paumé la.

en recherchant l'écriture / lecture d'un ini, je tombe sur des dizaines et des dizaines de ligne de code, dont j'ai du mal a tout comprendre.

La personne en question qui m'a demandé ca m'a fournit :

-Le code ci dessus, pour la connexion et l'ini
- un exemple de requete SQL

<small>Sub
Initialisation_liste_Nom()</small>

<small>    'Ouverture</small>
<small>        Call
Procédures_Locales.Ouverture_d_enregistrement(LIEU_DOMICILE)</small>
<small>        LIEU_DOMICILE.Open "SELECT * FROM [LIEU DOMICILE]
ORDER BY Nom", BDD
</small>
<small>        </small>
<small>    'remplissage dans la liste déroulante</small>
<small>        If Not LIEU_DOMICILE.EOF Then</small>
<small>            Do</small>
<small>               
Contact.L_Nom.AddItem LIEU_DOMICILE!Nom & " - " &
Trim(LIEU_DOMICILE!Cp_D & " ") & " " &
Trim(LIEU_DOMICILE!Ville_D & " ")
</small>
<small>                Contact.L_Nom_Num.AddItem
LIEU_DOMICILE!NumLieuD</small>
<small>                LIEU_DOMICILE.MoveNext</small>
<small>            Loop Until LIEU_DOMICILE.EOF</small>
<small>        End If</small>
<small>    </small>
<small>    'Fermeture</small>
<small>        Call
Procédures_Locales.Fermeture_d_enregistrement(LIEU_DOMICILE)
</small>
<small>        </small>
<small>End Sub

et sa méthode :

</small><small>Sub
Ouverture_d_enregistrement(ByRef NomdEnregistrement As ADODB.Recordset)</small>

<small>'Ouverture de la BDD + Initialisation de l'Enregistrement</small>
<small>    If BDD.State = 0 Then</small>
<small>        BDD.Open</small>
<small>        Debug.Print "Ouverture de la base de données"</small>
<small>    End If</small>
<small>    Set NomdEnregistrement = New ADODB.Recordset</small>

<small>End Sub</small>

<small>Sub Fermeture_d_enregistrement(ByRef NomdEnregistrement As
ADODB.Recordset)</small>

<small>'Fermeture de la BDD</small>
<small>    If BDD.State = 1 Then</small>
<small>        BDD.Close</small>
<small>        Debug.Print "Fermeture de la base de données"</small>
<small>    End If</small>

<small>End Sub</small>

J'ai un peu de mal a voir comment organiser tout ca, n'auriez vous pas quelques pistes a me donner ? :(
0

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

Posez votre question
Doc VB Messages postés 16 Date d'inscription vendredi 24 novembre 2000 Statut Membre Dernière intervention 20 juillet 2007
8 juin 2007 à 11:42
Pour la partie INI, essaye de faire un peu de tri et de regarder les exemples, par ailleurs il existe déjà de nombreux posts sur le sujet, je suis sûr que tu t'en sortiras.


Le nouveau code que tu donnes concerne une toute autre partie, et rien que les commentaires suffisent à comprendre son utilité. Une requête est lancée sur la table "LIEU_DOMICILE" et son résultat sert à remplir deux listes déroulantes.
0
AlicePabelle Messages postés 37 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 10 septembre 2007
8 juin 2007 à 11:46
Trés bien, merci, je vais faire des recherche.
0