Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

IMPLEMENTATION AUTOMATIQUE DE RECORDSET POUR TOUS LES PROVIDERS, PASSER LE RECORDSET EN PARAMÈTRE ET IL GÈRE TOUT SEUL AJOUTER/MODIFIER/SUPPRIMER, TRIER, FILTRER ET VISUALISER


Information sur la source

Catégorie :Base de Donnees Classé sous : access, ado, connection, command, recordset Niveau : Initié Date de création : 05/08/2005 Date de mise à jour : 18/08/2006 12:41:12 Vu / téléchargé: 8 243 / 1 572

Note :
8,8 / 10 - par 5 personnes
8,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

  • '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
'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

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

05 août 2005 21:20:44 :
ça pas marché avec le Zip, pourquoi je sais pas alors j'ai essayé sans.
06 août 2005 14:22:18 :
Pour cette modif je change juste dans la présentation l'extrait du code source, qui est cette fois identique à l'exemple se trouvant dans le Zip. je n'arrive toujours pas à uploader le Zip, j'espère pouvoir y arriver.
06 août 2005 15:37:50 :
Test d'ajout du zip, sera a changer.
06 août 2005 17:29:08 :
test 2
08 août 2005 13:58:35 :
Modifications apportées à la source: - Redimensionnement dynamique du formulaire et de ses controles e fonction des valeurs d'initialisation - Spécification du mode de travail (implémentation ou Lecture seule) - Passage des informations du recordset à une procédure externe pour l'affichage des résultats - Reorganisation des procédures pour une meilleure lisibilité
18 août 2006 12:39:16 :
Ajout du Zip dans la source . Il s'agit du zip version du 08/08/2005, donc pas de mise à jour. les modifications seront publiés ultérieurement.
18 août 2006 12:39:18 :
Ajout du Zip dans la source . Il s'agit du zip version du 08/08/2005, donc pas de mise à jour. les modifications seront publiés ultérieurement.
18 août 2006 12:39:20 :
Ajout du Zip dans la source . Il s'agit du zip version du 08/08/2005, donc pas de mise à jour. les modifications seront publiés ultérieurement.
18 août 2006 12:41:13 :
Ajout du Zip dans la source . Il s'agit du zip version du 08/08/2005, donc pas de mise à jour. les modifications seront publiés ultérieurement.

Commentaires et avis

signaler à un administrateur
Commentaire de BruNews le 06/08/2005 17:43:55 administrateur CS

ADMIN INFO:
un bug empêche l'upload du zip, il sera provisoirement téléchargeable ici:
http://brunews.free.fr/ImplemTables.zip

signaler à un administrateur
Commentaire de BruNews le 08/08/2005 14:14:52 administrateur CS

Modification:
Le mode de travail (implémentation ou lecture seule), le Zoom du formulaire pour le redimensionnement dynamique des controles, la visualisation des résultats (passage des informations pour affichage).
Adresse du zip: http://brunews.free.fr/ImplemTables.zip

signaler à un administrateur
Commentaire de asimengo le 09/08/2005 19:53:55

Dommage j'espérais avoir des critiques qui me permettraient de m'améliorer, notamment sur la composition du filtre avec In et Like qui ne marchent pas dans cette source.

Corrections
-----------

Pour attaquer l'onglet DATA du classeur CAISSE, remplacer
Set .AdodbConnection("DATA$") = Cnx2
par
Set .AdodbConnection("[DATA$]") = Cnx2

signaler à un administrateur
Commentaire de ndouna2 le 09/09/2005 13:18:15

Je compte d'abord installer VB sur la machine où je navigue j'apporterai mon avis!!

signaler à un administrateur
Commentaire de COlive le 26/10/2005 11:16:46

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)

signaler à un administrateur
Commentaire de asimengo le 26/10/2005 17:33:47

@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+

signaler à un administrateur
Commentaire de SgtKabukinan le 24/01/2006 16:58:18

Ca m'a l'air très interessant pour l'instant !
Je vais donc télécharger tout ca
Commentaire a venir

signaler à un administrateur
Commentaire de YSFGEN le 30/08/2007 18:21:51

je n'ai rien a dire sachant que je travaillais sur un projet similaire merci pour ce code.
A+

signaler à un administrateur
Commentaire de asimengo le 30/08/2007 19:20:40

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

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Connection sur DB Access (Ado, Dao...) [ par David2410 ] Salut les champions, j'ai un prob, j'ai un formulaire avec des listes déroulantes, j'ai mis un contrôle Ado par liste déroulantes, plus un contrôle AD ADO sous access [ par scoder ] bonjour, je bloque sur un truc tout con que j'ai déjà fait à maintes reprises mais là ça ne passe pas....j'ai les variables globales suivantes :Dim cn ado sous access [ par scoder ] bonjour, je bloque sur un truc tout con que j'ai déjà fait à maintes reprises mais là ça ne passe pas....j'ai les variables globales suivantes :Dim cn ADO, RecordSet, SQL & Access [ par jpbest85 ] BonjourJe réalise un petit programme en VB6 dans lequel j'intérroge et modifie une base access.Je fais dc un Select sur ma base (je récupère donc un r VB6-Access avec ADO [ par esquimau ] Bonjour, j'utilise un recordset et j'ai un petit problème pour compter le nombre d'enregistrements avec la commande recordset.recordcount. En fai Ado gérer 2 table avec ACCESS [ par JeffC1977 ] Salut... J'utilse ADO et VB6 et ACCESS J'ai un petit problème... Bon je ne suis même pas certain que ca se fais... Surement mais si ca fo Ado gérer 2 table avec ACCESS [ par JeffC1977 ] Salut... J'utilse ADO et VB6 et ACCESS J'ai un petit problème... Bon je ne suis même pas certain que ca se fais... Surement mais si ca fo Pas d'insertion mais pas d'erreur non plus [ par narfight ] Bonjour,Je suis en train de débuter sur Access et je suis bloqué au début.Mon programme boucle pour inséré dans un DB des nombres ... c'est pour comme Connection BDD Access [ par croftman ] Bonjour!Voila je voudrais pouvoir ouvrir une BDD, la lire puis la modifier... enfin la routine quoi 8-)Mais voila, lorsque je veux me connecter à ma b connection access en ouverture d'excel [ par jahworks ] bonjour,j'ai la fonction suivanteFunction packing2(champs, letag, leprojet, litemeqpt As String) Dim source As ADODB.ConnectionDim t_list As AD


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.