IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Ecriture/ lecture fichier INI pour connexion base de données


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut Ecriture/ lecture fichier INI pour connexion base de données
    Bonjour

    J'ai pour habitude de me connecter a une base de données, via ado, et en quelques lignes de code.

    La, je dois faire un fichier INI.

    Je me retrouve donc avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub form_load()
    BDD_HDD = CStr(LIRE_INI("BDD"))
        If BDD_HDD = String(255, 0) Then
            Do
                valeur = InputBox("indiquez le chemin permettant d'accéder a la base de données ")
                Call ECRIRE_INI(BDD, valeur)
                BDD_HDD = CStr(LIRE_INI("BDD"))
           Loop Until Trim(BDD_HDD) <> ""
        End If
     
     
     
    End Sub
    Je ne comprends pas plusieurs choses :

    - La Condition " If BDD_HDD = String(255, 0) Then " comment l'interpreter ?

    " Si BDD_HDD est une chaine de caractere entre 255 et 0 caracteres, alors "

    C'est ca ?

    - CSrt ? Trim ? c'est quoi exactement ?

    - BDD_HDD = CStr(LIRE_INI("BDD"))

    Que veut dire cette partie ?

    merci

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    - La Condition " If BDD_HDD = String(255, 0) Then " comment l'interpreter ?

    " Si BDD_HDD est une chaine de caractere entre 255 et 0 caracteres, alors "
    en gros oui

    cstr permet de convertir en String
    trim enleve les espaces au debut et a la fin de la chaine s'il y en a

    BDD_HDD = CStr(LIRE_INI("BDD"))
    veut dire qu'il va lire la chaine de cractere qui a pour clé "BDD" dans le fichier ini et mettre cette valeur dans a variable BDD_HDD

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut
    Merci


    Pourrais je toutefois, encore quelques precisions ?

    Bon je comprends chaque terme de l'algorithme et pourtant, je n'arrive pas a l'interpreter.

    Je vais prendre ligne par ligne :

    BDD_HDD = CStr(LIRE_INI("BDD"))

    Donc la, on converti ce que BDD contient j'imagine ? mais comment peut il contenir un truc, puisque, aurparavant, il n'ya eu aucun inputbox ?

    If BDD_HDD = String(255, 0) Then
    Si BDD_HDD comporte une chaine de caractére, la on est d'accord.

    Do
    valeur = InputBox("indiquez le chemin permettant d'accéder a la base de données ")

    Alors Valeur prend pour valeur, ce qu'on a indiqué en chemi

    n d'accés

    Call ECRIRE_INI(BDD, valeur)
    On appel une fonction afin d'écrire dans le INI, la Valeur ( chemin d'accé ) et BDD, mais BDD est declaré comme BDD as ADODB.connection, donc je vois pas ce qu'il y a écrire sur ca !! ??
    BDD_HDD = CStr(LIRE_INI("BDD"))
    BDD_HDD ( qui est String )va prendre la valeur de BDD eune fois converti en String ( encore une fois, que contient BDD ?? )

    Loop Until Trim(BDD_HDD) <> ""
    Jusqu'a ce que BDD HDD ne soit plus vide, espace y compris.

    merci

    Si vous pouviez m'éclairer sur ces points, ca m'aiderais bcp

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Ben moi je dirai ...
    LIRE_INI ... doit être une fonction déclaré ailleurs dans ton code et elle te permet de lire le contenu d'une clef dans ton fichier ini...

    ECRIRE_INI ... doit te permettre d'écrire ... et la je pense qu'il manque des guillemets autour du nom de la Clef "BDD"..

    les fonctions LIRE_INI et ECRIRE_INI doivent ressembler à cela :
    Comment lire / écrire dans un fichier .ini ?

  5. #5
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Et String ne convertit pas quelque chose en chaîne. Cette fonction construit un chaîne d'un certain nombre d'un caractères identiques. Ici on a une chaîne de 255 caractères zéro ( chr(0) & chr(0) & ... 255 fois... vous voyez ?).

    Citation Envoyé par MSDN
    Returns a Variant (String) containing a repeating character string of the length specified.

    Syntax

    String(number, character)

    The String function syntax has thesenamed arguments:

    Part Description
    number Required;Long. Length of the returned string. If number containsNull, Null is returned.
    character Required; Variant.Character code specifying the character orstring expression whose first character is used to build the return string. If character contains Null, Null is returned.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut
    Hum, je vais pas vous cacher que je nage encore un peu.

    Cette fonction construit un chaîne d'un certain nombre d'un caractères identiques. Ici on a une chaîne de 255 caractères zéro ( chr(0) & chr(0) & ... 255 fois... vous voyez ?).
    255 fois 0 ?

    quel est le rapport avec ca ? If BDD_HDD = String(255, 0) Then

    Quelqu'un saurait il me traduire, le plus simplement, l'algorithme que j'ai posté un peu plus haut ? ( comme j'ai tenté de le faire )

    Bon, mis a part ca, si j'ai bien compris, la création d'un .INI, ca n'a rien de vraiment personnel a chaque application et c'est un truc bête et méchant a apprendre par coeur ?

    Je me suis attaqué a la creation des fonction LIRE_INI et ECRIRE_INI.

    Tout va bien sauf a la fin, pour l'execution :
    Ecrire_ini ("entete", "variable", "valeur" )

    Il me dit qu'il manque un "=" Dans le tuto ca n'y est pas. Un oubli ?

    Et enfin, derniere chose LIRE_INI = Left$ a quoi correspond Left$ ?

    Merci encore

    lyra

    s'il vous plait ?

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ici If BDD_HDD = String(255, 0) Then... tu compare le contenu de ta variable BDD_HDD avec une chaîne composée de 255 0

    la Ecrire_ini ("entete", "variable", "valeur" ) ... on n'as toujours pas vu ta fonction Ecrire_ini .... si tu n'as pas besoin du retour de celle-ci enlève les parenthèses, ou rajoute Call devant l'appel.



    Citation Envoyé par lyraaa
    Et enfin, derniere chose LIRE_INI = Left$ a quoi correspond Left$ ?
    la ligne n'est pas complète ... non ..? un coup de sur left...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut
    Toutes mes excuse, je ne pensais pas que la suite importait, je voulais surtout comprendre l'utilité du left$

    Donc ca fait ca en entier :
    LIRE_INI = Left$(retour, getprivateprofilestring#(Entete, ByVal variable, "", retour, Len(retour), Fichier))

    D'ailleurs, si vous voulez voir le module au complet :


    http://www.megaupload.com/?d=4HXI9IOD

    ( ouvrir avec exdcel )

    Beaucoup d'erreurs ?

    merci

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Citation Envoyé par lyraaa
    Toutes mes excuse, je ne pensais pas que la suite importait, je voulais surtout comprendre l'utilité du left$

    Donc ca fait ca en entier :
    LIRE_INI = Left$(retour, getprivateprofilestring#(Entete, ByVal variable, "", retour, Len(retour), Fichier))

    D'ailleurs, si vous voulez voir le module au complet :


    http://www.megaupload.com/?d=4HXI9IOD

    ( ouvrir avec exdcel )

    Beaucoup d'erreurs ?

    merci
    Bonjour,
    getprivateprofilestring est un API windows, la variable de transfert de sa donnée doit impérativement avoir une longueur des 250 caractères d'ou sa déclaration.
    Il faut aussi déclarer la fonction getprivateprofilestring !
    Fichier est le nom et éventuellement le chemin du fichier INI, s'il n'existe pas in le crée, mais il n'y aucune donnée dedans.
    Une petite explication
    Dans un module mettre les déclarations API
    Function WritePrivateProfileString Lib "kernel32".....
    GetPrivateProfileString Lib "kernel32" ....

    Un exemple pour lire dans un fichier INI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function Lit_VAR_INI(Rubriq As String, S_Rub As String, Optional Index As Integer) As String
    Dim RetVal As String, ret%
    RetVal = Space$(150)
    ret% = GetPrivateProfileString(Rubriq, S_Rub, "", RetVal, 150, NomINI)
    Lit_VAR_INI = Left$(RetVal, ret%)
    End Function
    Un exemple pour écrire dans un ficier INI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Ecrit_VAR_INI(Rubriq As String, S_Rub As String, Txt As String, Optional Index As Integer)
    Dim ret%
        ret% = WritePrivateProfileString(Rubriq, S_Rub, Txt, NomINI)
    End Sub
    Rubriq = une variable string : la rubrique de la recherche ex: "MaBDD"
    S_Rub = une variable string : par ex: "Chemin1"

    NomINI est le nom du fichier INI
    Il est souvent mis dans le répertoir de l'appli et porte le nom de l'appli avec l'extention INI
    Ex pour initialiser le nom du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Init_Nom_INI()
        Chemin = App.Path & "\"
        NomINI = Chemin & App.EXEName & ".INI"
    End Sub
    Voila déja quelque bases à creuser.
    A+

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/01/2014, 15h19
  2. Réponses: 1
    Dernier message: 04/07/2008, 14h53
  3. Fichier pfile pour une base de donnée 10g
    Par fouad77fr dans le forum Administration
    Réponses: 2
    Dernier message: 19/11/2007, 18h45
  4. Réponses: 5
    Dernier message: 02/10/2006, 22h54
  5. Parametre dans fichier ini pour base fractionnée
    Par sunvialley dans le forum Access
    Réponses: 5
    Dernier message: 28/07/2006, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo