Implementation automatique de recordset pour tous les providers, passer le recordset en paramètre et il gère tout seul ajout

Soyez le premier à donner votre avis sur cette source.

Vue 11 421 fois - Téléchargée 1 869 fois

Description

C'est très embetant de devoir créer autant de formulaires pour les tables de références de votre application. Ceci est une solution à ce problème, hors mis les bugs que vous y decouvrirez.

Son principe est simple, il s'agit de spécifier lui passer le recordset en paramètre (quel que soit le provider), le module fait la reconnaissance automatique des champs du recordset, et construit dynamiquement les contrôles pour l'ajout/modification des données. Il n'ya pas de limitation sur le nombre de champs. Un paramètre permet de redimensionner dynamiquement tous les contrôles du formulaire. Le clic sur le bouton visualiser renvoie l'IDCommande, La chaine de tri et la chaine de filtre qui peut être dans une procédure pour affichage de l'état.
Un paramètre permet également de définir le mode d'affichage (implémentaion ou lecture seule)

L'exemple publié permet de voir 3 possibilités:
ACCESS comme driver, Excel comme driver(j'ai pas su passé la commande) et Microsoft Text comme driver.

Il est possible de faire des tris sur un champ ou de faire des filtres sur un champ. Pour ce dernier cas vous constaterez qu'il y'a des ameliorations.

Source / Exemple :


'Voici trois exemples qui permettront d'exploiter cet implementateur de table

'Partant des constantes suivantes qui peuvent se multiplier pour autant de Driver

Public Const Const_InitAccessConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0"
Public Const Const_InitExcelConnectionString = "driver={Microsoft Excel Driver (*.xls)};DriverId=790;ReadOnly=0;FirstRowHasNames=1"
Public Const Const_InitAsciiConnectionString = "driver={Microsoft Text Driver (*.txt; *.csv)};DriverId=27"

Dim Cnx1 As ADODB.Connection, Cnx2 As ADODB.Connection, Cnx3 As ADODB.Connection

Sub main()
Dim StrCnx1 As String, StrCnx2 As String, StrCnx3 As String
Dim EditeurRecordset1 As Cl_EditeurRecordset
Dim EditeurRecordset2 As Cl_EditeurRecordset
Dim EditeurRecordset3 As Cl_EditeurRecordset

    'Exemple d'appel du module pour une table ACCESS
    StrCnx1 = Const_InitAccessConnectionString & ";Data Source=" & App.Path & "\DATA\ACCESS\" & Const_DataBaseName & ";Jet OLEDB:Database Password=" & Const_Pwd
    Set EditeurRecordset1 = New Cl_EditeurRecordset
    Set Cnx1 = AdodbConnection(StrCnx1)
    With EditeurRecordset1
        Set .AdodbConnection("T_Ports") = Cnx1
        .Init , "Implementation d'une table ACCESS", , 80 / 100
        .Run
    End With

    'Exemple d 'appel du module pour une feuille EXCEL
    StrCnx2 = Const_InitExcelConnectionString & ";DBQ=" & App.Path & "\DATA\EXCEL\CAISSE.xls"
    Set EditeurRecordset2 = New Cl_EditeurRecordset
    Set Cnx2 = AdodbConnection(StrCnx2)
    With EditeurRecordset2
        Set .AdodbConnection("DATA$") = Cnx2
        .Init , "Implementation d'une feuille EXCEL"
        .Run
    End With

    'Exemple d'appel du module pour un fichier ASCII
    StrCnx3 = Const_InitAsciiConnectionString & ";DBQ=" & App.Path & "\DATA\ASCII"
    Set EditeurRecordset3 = New Cl_EditeurRecordset
    Set Cnx3 = AdodbConnection(StrCnx3)
    With EditeurRecordset3
        Set .AdodbConnection("ExportGeolog.txt") = Cnx3
        .Init , "Implementation d'un fichier ASCII", False, 75 / 100
        .Run
    End With
End Sub

Conclusion :


Je suis habitué à developper sous ACCESS, après avoir lu la plupart de vos sources depuis un bon bout déjà j'ai decide de me jetter et c'est ma première source serieuse en VB.
Alors étant habitué aux requêtes avec DAO, il est clair que je ne maitrise pas bien les requêtes avec ADO.
Les evenements avant mise à jour et après mis à jour n'ont pas été rigoureusement pour les chmaps de filtre.

Toutes les remarques et suggestions sont les biens venus.

A+

Asimengo

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de BruNews

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.