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 448 fois - Téléchargée 1 870 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

cs_asimengo
Messages postés
281
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
18 mars 2009
-
YSFGEN, tu me permets de me relire sur cette vieille bonne source, qui reste d'actualité pour moi encore.

Pour la suite de l'histoire, je me suis marié comme prévu le 17/12/05 et depuis je suis père de 2 enfants Kenza (3ans voir mon image) et Eldrida (1an). Ca n'a suremnt rien à voir avec la source, mais je donne une fin à mon précédent commentaire.

Depuis là le niveau a considéramment augmenté grace à vbfrance, juste le temps qui manque pour publier la version améliorée de cette source. Mais je suis toujours à la pêche, bien sûr
YSFGEN
Messages postés
3
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
21 mars 2006
-
je n'ai rien a dire sachant que je travaillais sur un projet similaire merci pour ce code.
A+
SgtKabukinan
Messages postés
106
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
23 janvier 2010
-
Ca m'a l'air très interessant pour l'instant !
Je vais donc télécharger tout ca
Commentaire a venir
cs_asimengo
Messages postés
281
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
18 mars 2009
-
@COLIVE : je dois reconnaitre que j'ai pas encore eu le temps de me replonger là dessus (requête avec IN et LIKE). Néanmoins j'ai eu l'occasion de le tester sur ORACLE ça marche en l'état, le problème général se trouve au niveau du filtre. Je suis plus à l'aise avec ACCESS donc ne manque pas de me faire des remarques ou suggestions sur le fond ou la forme.

Je l'ai nettement amélioré déjà mais je suis très pris par autre chose jusqu'en Janvier (J'ai une bague magique à remettre à DARLING). Néanmoins je continue à pêcher tout ce qui m'interesse sur le site.

Merci pour les félicitations

A+
COlive
Messages postés
91
Date d'inscription
mercredi 27 février 2002
Statut
Membre
Dernière intervention
3 décembre 2011
-
Super boulot et idée très très bonne.

Un gain de temps phénoménal pour ceux qui travaillent sur les base.

Pour les requete avec in ou like, il faut faire attention à l'opérateur généraique que tu utilise, selon la base de donnée pointée c'est soit le % soit le * soit le ?
(Je compte adapter ton code pour une base oracle)

Trés encouragent
Plus qu'a en faire un controle utilisateur et pourquoi pas le faire en .net (je ne fait plus de vb6 mais du .net)

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.