Class vb pour table access

Soyez le premier à donner votre avis sur cette source.

Vue 22 226 fois - Téléchargée 4 091 fois

Description

Cette class VB, vous permettra de manipuler une base de données Access (ou autre si vous changez quelques trucs) assez facilement, toutes les actions courantes y sont. Je généraliserais bientôt cette Class afin de pouvoir l'adapter à toutes les tables sans avoir à créer une Class spécifique pour cette table.

Source / Exemple :


Public Sub Ajouter(rs As ADODB.Recordset, cn As ADODB.Connection, Frm As Form, Tbl As String, ParamArray NomChamp() As Variant)
    Dim i, compt As Integer
    rs.Open Tbl, cn, 1, 2
        rs.AddNew
        i = rs.Fields.Count 'Compte le nombre de lignes
        For compt = 0 To i - 1
            'Les noms des champs du formulaire doivent avoir le mm nom que les colonnes de la table
            rs.Fields(NomChamp(compt)) = Frm(NomChamp(compt)).Text
        Next compt
        rs.Update
    rs.Close
End Sub
'Remplissage de ComboBox uniquement ceux créés avec Microsoft Form 2.0
 Public Sub Lister(Frm As Form, Ctl As String, rs As ADODB.Recordset, Conn As ADODB.Connection, sql As String, ParamArray parametre() As Variant)
    Dim compt, compt2 As Integer
    'Ouvre la requête
    rs.Open sql, Conn, adOpenStatic, adLockOptimistic
    Frm(Ctl).Clear 'Efface la liste
    compt = 0
    While rs.EOF = False
        Frm(Ctl).AddItem rs.Fields(parametre(0))
        For compt2 = 1 To UBound(parametre)
            If Not IsNull(parametre(compt2)) Then Frm(Ctl).Column(1, compt) = rs.Fields(parametre(compt2))
        Next compt2
        rs.MoveNext
        compt = compt + 1
    Wend
    rs.Close
End Sub

Public Sub MODIFIER(rs As ADODB.Recordset, cn As ADODB.Connection, sql As String, Frm As Form, ParamArray NomChamp() As Variant)
    Dim i, compt As Integer
    rs.Open sql, cn, 1, 2
        i = rs.Fields.Count
        For compt = 0 To i - 1
            rs.Fields(NomChamp(compt)) = Frm(NomChamp(compt)).Text
        Next compt
        rs.Update
    rs.Close
End Sub

Public Sub Supprimer(rs As ADODB.Recordset, cn As ADODB.Connection, sql As String)
    rs.Open sql, cn, 1, 2
        rs.Delete
        rs.Update
    rs.Close
End Sub

Conclusion :


J'espère que ça aidera certains, et que vous me laisserez des commentaires et/ou une note.
Merci ^^

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mardi 14 mars 2006
Statut
Membre
Dernière intervention
14 mars 2006

bien contunie
Messages postés
280
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
18 mars 2009

Je suis interessé par ton projet, générer un form.
J'aimerais bien savoir comment générer un form (avec des contrôles) que ce soit en mode création du projet ou déjà compilé. C'est à dire générer un form utilisable par l'application. Quelle est l'intérêt mes applis se ressemble beaucoup côté ergonomie des interfaces alors pourquoi pas faire un générateur suivant des principes qui me sont propres. A ce moment je pourrais sérieusement travailler le design qui pour moi est encore un problème.
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Ha ok, je vois ce que tu veux dire maintenant, mais comme' je l'ai mis dans le titre c pour une table Access. bref, je posterais bientot une source capable de générer un form Vb à partir d'une table Access, un peu comme ta source mais à la différence que moi, je veux génèrer un form, ce n'est pas un form dynamique...
Messages postés
280
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
18 mars 2009

Ton code je suis marche bien et je continue de dire que l'idée est très bonne.
Pour le code je me suis limité à l'exemple du source et j'ai du oublier de le download, mille choses à la fois.

Je prends ta fonction MODIFIER : Public Sub MODIFIER(rs As ADODB.Recordset, cn As ADODB.Connection, sql As String, Frm As Form, ParamArray NomChamp() As Variant)

Pour moi, si rs, cn et sql ne sont envoyés en paramètre cela permet déjà que ta classe puisse être utilisée pour tous les providers, ces variables doivent être des propriétés de la classe. De deux au lieu d'envoyer la form en paramètre, ce qui limite les possibilités de ta fonction MODIFIER, tu lui envoi la liste des valeurs pour la modification en une variable array. sachant que la valeur 1 corespond au champ 1 et etc ...
Tu pourras de ce fait créer une méthode qui lit les valeurs des champs recordset sur un formulaire et renvoie le résultat sous forme d'Array.

C'est juste des suggestions mais ton code il marche impec,bien que je trouve un peu des redondances.
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Certes, j'ai déposé cette source pour donner une idée sur la manipulation d'une table par une classe. Evidemment, on peur rajouter ce que l'on veut. De plus, je suis en train d'améliorer la fonction lister, pour qu'elle accepte les valeurs null...
je voulais initialiser le recordset comme tu dis, mais sans le faire ça marche très bien aussi. Alors je vois pas l'intérêt.
Je ne vois pas ce que tu veux dire par:
"pour la modification tu envoi les nouvelles valeurs en paramètre comme une variable de type array, ceci te permettra de créer une méthode qui lit les nouvelles valeurs dans un form et renvoi le résultat en variant (array)."
Actuellement, je ne vois pas ce qui m'empêche de parcourir le recordset, as-tu regardé mon code en entier?
De plus, je ne vois pas quoi mettre dans l'image pour que ça soit bien représentatif, t'as une idée?
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.