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 :

[VB6] Module de classe ( et Form )


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut [VB6] Module de classe ( et Form )
    Bonjour

    J'ai un projet a faire, qui gére une base de données. Je n'ai pas encore accés a la base de données.
    Habituellement, je travail sur des petites bases de données Access, avec de simples requêtes dans le module du programme même.
    ( rc.open....rc.close ... enfin bref, le truc simple et classique )

    La je me vois dans l'obligation d'utiliser des Modules de classes.
    Ces modules sont crées, et j'ai déja pu renseigner une partie sous cette forme :

    Module de Classe Client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim clt_num As Integer
    Dim clt_nom As String
    [...]
    _________________
     
    Function Information_clt_num() As Integer
        Information_clt_num = clt_num
    End Function
     
    Function Information_clt_nom() As String
        Information_clt_nom = clt_nom
    End Function
    [...]
    Bon le soucis, c'est que je ne sais pas du tout tiliser ces modules de classe. J'imagine que la Function va servir a simplifier les choses en permettant de le repeter sur les autres modules de classe.

    J'ai commencer a lire les ( long ) tuto sur les module de classe, si quelqu'un a des suggestion, explications, information, exemples... je suis vraiment preneuse.

    Comment faire une requete avec ce genre de module de classe ?
    ( je dois mettre quoi sur mon bouton " Recherche " pour faire une requete de lecture, et quoi dans le module de classe ?

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Il est préférable d'utiliser les propriétés pour accéder aux données.
    Les méthodes (function ou sub) pour les actions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    private clt_num As Integer
    private clt_nom As String
    [...]
    _________________
     
    ' Place (affecte) la valeur dans la variable locale clt_Num
    Public Property Let Information_clt_num(ByVal iDonnees As Integer) 
        clt_num = iDonnees
    End Property 
     
    ' Donne (renvoie) la valeur de la variable locale clt_Num
    Public Property Get Information_clt_num() As Integer
        Information_clt_num = clt_num
    End Property 
     
    Public Property Let Information_clt_nom(ByVal sDonnees As String)
        clt_nom = sDonnees 
    End Property 
     
    Public Property Get Information_clt_nom() As String
        Information_clt_nom = clt_nom
    End Property 
    [...]
    _________________
    public Function ChargeListe([...]) as integer ' pourra renvoyer un numéro d'erreur en cas d'echec
    [...]
    End Function
     
    ' ===== Initialisations ===== est executé lors de la création de la classe
    Private Sub Class_Initialize()
      ' init des variables
      clt_num = 0
      clt_nom  = ""
    End Sub
    Quelle est la base de données ?
    Et surtout comment souhaites-tu y accéder ? (à travers les composants d'accès BdD ou avec du SQL pur)
    Dans quel but la classe, seulement pour ajouter et modifier (insert, update) ?

    Pour la programmation c'est la même chose qu'un module sauf que tu accédes à travers la variable de ta classe.

    Ex de classe
    http://www.developpez.net/forums/sho...iliser+classes

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut
    Je fais l'interface sous VB.

    La base de données est actuellement en fichier Excel, sur un autre PC ( comprendre par la que je n'y ai pas encore accés ), et est destiné a être transferée sur d'autres supports, dans un futur proche.


    Pour acceder a la base de données, j'ai déjà crée les modules. Ces modules servent a la fois de Création de .ini et de connexion a la bdd.

    La connexion se fait ( petit bout du code ) de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set BDD = New ADODB.Connection
    BDD.provider = "Microsoft.jet.oledb.4.0"
    BDD.connectionString = BDD_HDD
    End Sub
    Les but de la classe ? Je veux pouvoir :

    - Consulter ( requete surla base de donées )
    - Ecrire ( et donc updater )


    _________________________________________________________

    Bon ensuite, j'aimerai qques eclaircissements sur ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Property Let Information_clt_num(ByVal iDonnees As Integer) 
        clt_num = iDonnees
    End Property
    Ca sert a quoi concrétement ca ? lui expliquer que clt_num est en fait iDonnees ?

    En tout cas, merci pour ce debut de reponse.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Je vais prendre la 2ème variable pour expliquer avec une comparaison.

    Dans une classe nous n'accèdons pas directement aux variables,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' clt_nom est inaccessible en dehors de la classe
    private clt_nom As string '
    nous passons à travers les propriétés pour connaître sa valeur ou lui attribuer une valeur.


    Attribuer une valeur :
    La valeur contenue dans le paramètre sDonnees sera placé dans clt_nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' Place (affecte) la valeur dans la variable locale clt_Nom
    Public Property Let Information_clt_nom(ByVal sDonnees As String)
        clt_nom = sDonnees 
    End Property
    Récupérer la valeur :
    Ici nous récupérons la valeur de clt_nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' Donne (renvoie) la valeur de la variable locale clt_Nom
    Public Property Get Information_clt_nom() As String
        Information_clt_nom = clt_nom
    End Property

    Pour que cela soit un peu plus concret c'est comme un composant vb
    ex: comparons avec une textbox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Quand tu fais 
    MaClasse.Information_clt_nom = "Lyraaa"
    'c'est équivalent à 
    MaTextBox.text = "Lyraaa"
    vb appele la propriété => Public Property Let Information_clt_nom(ByVal sDonnees As String)
    avec "Lyraaa" comme valeur du paramètre "sdonnees"
    La ligne clt_nom = sDonnees place "Lyraaa" dans clt_nom


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Quand tu fais 
    UneVarChaine = MaClasse.Information_clt_nom '=> (UneVarNum vaut "Lyraaa")
    'c'est équivalent à 
    UneVarChaine = MaTextBox.text '=> (UneVarChaine vaut "Lyraaa" )
    vb appele la propriété => Public Property Get Information_clt_nom() As String
    La ligne Information_clt_nom = clt_nom donne "Lyraaa" à la propriété qui la renvoie, et ensuite est affecté à UneVarChaine.


    La valeur integer clt_num fonctionne sur le même principe, mais la comparaison était plus explicite avec la valeur string clt_nom.
    Voila tu vas pouvoir étudier les tutos pour approfondir.

    ---------------------------------

    Je n'ai jamais accédé à excel de cette façon, je ne pourrai peut-être pas répondre à toutes tes questions.


    La voie sur laquelle tu t'engages risque peut-être d'être longue à mettre en oeuvre.

    Il est peut-être préférable de gérer la base de données avec Access comme tu as l'habitude de faire, et d'effectuer des extractions vers Excel.
    C'est juste un conseil, je ne connais pas les contraintes qui ont abouties à ce choix, mais il me semble que ce serait plus judicieux, surtout si tu as un grand volume de données.


    Une question tout de même.
    Si tu utilises les composants d'accés aux données, avec les feuilles d'Excel contenant des données brutes dans les colonnes, Est-ce que tu peux voir les feuilles comme des tables de BdD ?
    Si oui, tu peux faire comme avec access, sinon ce sera délicat.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut
    Bonjour

    merci pour cette interessante et enrichissante réponse

    Desormais, je comprends mieux le but de ce bout de code.

    Malheureusement, pour la gestion de la BDD, ce n'est pas un choix qu'on me laisse, mais une obligation.

    Je n'ai pas compris ta derniere question, mais non, j'ai pas accés a la base de données. Le fichier excel contenant toutes les info se trouve sur un autre pc.
    J'utilise juste VBA de Excel ( qui, sans base de données, est = a VB6 ).

    Mon second probleme, c'est que je ne sais pas comment ordonner tout ca :

    j'ai :
    • - 6 Forms
    • - 4 modules de classes
    • - 3 modules
    • - Et 3 tables principales dans Access


    - Les modules, sont juste les modules de conexion, pas de soucis avec.

    Pour mes tables j'ai : Client - Entreprise - Courtier
    Module de classe : Client - entreprise - courtier ( avec la declaration de variable de chaque champs : nom, prenom, age...)

    LEs 6 form, correspondent a :
    - rechercher une fiche client
    - Ajouter un client
    - rechercher une fiche entreprise
    - Ajouter une entreprise
    - rechercher un courtier
    - Ajouter un courtier

    Si j'avais eu directement la BDD sous Access, j'aurais écris la Requête de lecture ( rc.open......) sur le bouton " rechercher " et fait prendre un label, la valeur trouvée.

    Le soucis, c'est que la, on m'a obligé a utiliser des " Modules de classes ",et j'imagine que si on me les a fait créer, c'est pour les utiliser.

    Je ne sais pas dans quel ordre je dois agencer mon programme, a cause de ces module de classe. Un exemple : la recherche d'un client.

    - Une Inputbox demande " tapez le nom du client recherché " Bon la déja, je ne sais pas ou je dois stocker cette info, ni ou et quand ouvrir le recordset ( sur la Form ? le module de classe ? )

    - Une fois le client trouvé, je ne sais pas comment dire : " toutes les info trouvé sur le client, doivent être stocké dans le module de classe "

    etc etc

    Pour resumé, j'ai du mal a me servir des modules de classe :/

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Je n'ai pas compris ta derniere question, mais non, j'ai pas accés a la base de données. Le fichier excel contenant toutes les info se trouve sur un autre pc.
    J'utilise juste VBA de Excel ( qui, sans base de données, est = a VB6 ).

    Mon second probleme, c'est que je ne sais pas comment ordonner tout ca :

    j'ai :
    - 6 Forms
    - 4 modules de classes
    - 3 modules
    - Et 3 tables principales dans Access
    Si je comprend, les données sont actuellement sur excel (inaccessible), mais dans le futur elle seront sous access. Ai-je bien compris?

    Je continu de regarder, je poste un peu plus tard.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  7. #7
    Membre chevronné Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Par défaut
    Citation Envoyé par lyraaa
    up
    Prière d'éviter ce genre de message. Personne n'est à ton service pour commencer et si personne ne répond c'est que personne ne connait la solution.

    CE FORUM N'EST PAS UN SUPERMARCHE !

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] [Excel] Feuille dans une form, sans excel installé
    Par ro2v dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 05/05/2010, 12h45
  2. Réponses: 4
    Dernier message: 31/03/2006, 15h16
  3. [VB6]Récupérer les classes d'un projet
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 08/01/2006, 10h26
  4. VB6 - connaître si un objet Form est chargé en mode MODAL
    Par CBleu dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/01/2006, 21h16
  5. variables publiques ou module de classe ?
    Par niclalex dans le forum Access
    Réponses: 3
    Dernier message: 04/10/2005, 18h49

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