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 !

ADO HELPER - CLASSE D'AIDE MANIPULATION DE BASES DE DONNÉES ACCESS MYSQL SQLSERVER [MODULE DE CLASSE]


Information sur la source

Catégorie :Base de Donnees Classé sous : classe database, access, mysql, sqlserver, afck Niveau : Initié Date de création : 17/12/2007 Date de mise à jour : 13/01/2008 17:49:46 Vu / téléchargé: 7 771 / 1 409

Note :
9,75 / 10 - par 4 personnes
9,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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


Description

Cliquez pour voir la capture en taille normale
bonjour,
les bases de données sont indispensables dans la plupart des applications aussi ici je vous propose une classe permettant d'y accéder très facilement.

DAO est toujours fonctionnel mais obsolète et n'est plus maintenu par Microsoft, la classe est donc basée sur ADO et ADOX (expliqué dans la classe)



reste le type de base?
ici le point le plus délicat...
à court terme (j'espère ^^) elle supportera le plus de "formats" de bases possible


actuellement sont supportées :
*ACCESS 2
*ACCESS 97
*ACCESS 2000
*ACCESS 2002
*ACCESS 2003
*MYSQL 4.0.15
*SQLSERVER 6.5
*SQLSERVER 7.0
*SQLSERVER 2000



un exemple est fourni pour montrer les principales possibilités de cette classe :
*connexion
*déconnexion
*afficher le contenu d'une table
*lister toutes les tables
*lister tous les champs d'une table ou d'une requête
*création d'une base vierge
*suppression d'une base
*sauvegarde complète d'une base (pas évident pour MYSQL :p)
*création d'une table avec clé primaire
*ajout d'enregistrements
*suppression d'enregistrements
*mise à jour d'enregistrements
*compactage d'une base (ACCESS uniquement)
*taille d'une base
*récupérer la version du MDAC
*champ "image"
*export XML
*etc....



en espérant que çà vous soit utile
comm d'hab, les commentaires (et notes) font toujours plaisir ;)
 

Conclusion

j'ai commenté abondemment mais si c'est insuffisant je modifierai

cette source sera régulièrement mise à jour afin d'avoir des fonctions pratiques, différents formats de bases supportés, et selon vos demandes
 

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 !
  • ADO_Sample.vbpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 433 octets
  • ADO_Sample.vbwTélécharger ce fichier [Réservé aux membres club]Voir ce fichier222 octets
  •   database
    • Base_txt (avec notepad).mdb
    • Base2000 (avec access premium) avec PASSWORD.mdbTélécharger ce fichier [Réservé aux membres club]118 784 octets
    • Base2000 (avec access premium).datTélécharger ce fichier [Réservé aux membres club]118 784 octets
    • Base2000 (avec access premium).mdbTélécharger ce fichier [Réservé aux membres club]131 072 octets
    • Base2002-2003 (avec access ultimate).mdbTélécharger ce fichier [Réservé aux membres club]204 800 octets
    • Base2003 (avec access XP).mdbTélécharger ce fichier [Réservé aux membres club]204 800 octets
    • Base2007 (avec access ultimate).accdbTélécharger ce fichier [Réservé aux membres club]339 968 octets
    • Dictionnaire (access premium).mdbTélécharger ce fichier [Réservé aux membres club]147 456 octets
  •   class
  •   form
  •   img
  •   module
  •   usercontrol
    • AfBtn.ctlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier6 607 octets
    • AfBtn.ctxTélécharger ce fichier [Réservé aux membres club]10 524 octets

Télécharger le zip

Historique

17 décembre 2007 07:56:06 :
zip
17 décembre 2007 08:03:51 :
2 fichiers en trop
13 janvier 2008 17:49:47 :
Maj 1.2.1 : gestion complète de SQLSERVER, formatage de chaîne SQL, gestion d'erreurs plus claire, SqlExecute plus souple, existance d'une table, export d'un RecordSet en XML, export d'un RS en table (que pour access, voir les commentaires), aide pour les champs STREAM, compaquetage pour MySql et SqlServer, etc....

Commentaires et avis

signaler à un administrateur
Commentaire de Renfield le 17/12/2007 09:00:35 administrateur CS

dans une classe similaire que j'ai faite, j'ai mis une fonction pratique pour réaliser des etats... pendant la conception de ceux-ci, je créé une table a partir d'un RecordSet.

est-ce que l'on peut utiliser des transactions ?

signaler à un administrateur
Commentaire de Exploreur le 17/12/2007 09:07:16 10/10

Salut PCPT,

Ouahhhhhh ! C'est ce qui s'appelle une source(comme les autres aussi !), très très utile....Et bien, voilà une source qui est bien posée, organisée, et très bien expliquée ! Les débutants comme moi, vont pouvoir atteindre un certains "niveau" dans la conception de source en relation avec les Bdd...

C'est super cool d'avoir fait cela...De plus encore une source qui est à la hauteur de son auteur !

Bon, j'arrête là les compliments et les félicitations...lol..(mais ils sont mérités), car j'ai une source à décortiquer !

Passe de bonnes fêtes....

A+
Exploreur

signaler à un administrateur
Commentaire de petchy le 17/12/2007 11:09:15 10/10

Bonjour

je suis entierement d'accord avec Exploreur,trés trés utile est super bien commenté.
@plus
petchy

signaler à un administrateur
Commentaire de PCPT le 17/12/2007 17:31:14 administrateur CS

salut,
merci pour vos comms ;)

Rey -> pas bête pour créer une table depuis un RS. je mets dans la TODO ;)
par contre comment récupères-tu les types des champs?

pour les transactions, à ma connaissances ACCESS ne les supporte pas
on verra pour SQLSERVER
et pour MYSQL il faut que le serveur ne soit pas en autocommit (ce qui se change par la commande SET AUTOCOMMIT=0, supportée par l'execution simple de requête) et que la base le supporte
plus d'infos ici : http://dev.mysql.com/doc/refman/5.0/fr/commit.html

++ ;)

signaler à un administrateur
Commentaire de Renfield le 17/12/2007 19:41:23 administrateur CS

par ADOX

Public Sub CreateTableFromRS(ByRef vsName As String, ByRef voRs As ADODB.Recordset)
Dim oCat As ADOX.Catalog
Dim oTable As ADOX.Table
Dim oField As ADODB.Field
Dim oColumn As ADOX.Column
Dim oRs As ADODB.Recordset
    Set oCat = New Catalog
    Set oCat.ActiveConnection = moConn
    
    On Local Error Resume Next
    oCat.Tables.Delete (vsName)
    On Local Error GoTo 0
    
    Set oTable = New Table
    oTable.Name = vsName
    
    oCat.Tables.Append oTable
    
    For Each oField In voRs.Fields
        Set oColumn = New Column
        oColumn.Name = oField.Name
        oColumn.Attributes = adColNullable
        oColumn.Type = oField.Type
        oColumn.DefinedSize = oField.DefinedSize
        oTable.Columns.Append oColumn
    Next oField
    
    Set oRs = Me.OpenRecordset(vsName, adCmdTable, adLockOptimistic)
    
    voRs.MoveFirst
    Do Until voRs.EOF
        oRs.AddNew
        For Each oField In voRs.Fields
            If Not IsNull(oField.Value) Then
                oRs.Fields(oField.Name).Value = oField.Value
            End If
        Next oField
        oRs.Update
        voRs.MoveNext
    Loop
    oRs.Close
End Sub

signaler à un administrateur
Commentaire de PCPT le 18/12/2007 20:08:06 administrateur CS

j'adapterai dans la prochaine maj, merci ;)

signaler à un administrateur
Commentaire de PCPT le 03/01/2008 14:59:38 administrateur CS

Renfield -> dommage, apparemment seul access supporte '.Append ObjTable'
je continue mes recherches...

signaler à un administrateur
Commentaire de Renfield le 03/01/2008 15:05:10 administrateur CS

j'ai fait ca pour access effectivement, pour un truc bien précis...
dans l'absolu, faudrait utiliser une belle requete CREATE TABLE.

actuellement, ca m'est utile pour mettre au point mes etats crystal.

je créé mes données, je les stockes dans une base access pour pouvoir relancer encore et encore mon état, même sans VB ouvert.
en 'production', j'envoie directement un recordset a mon etat, plus besoin de table. le coté éphémère de la chose a fait que je ne me suis pas cassé la tête avec une requete.

signaler à un administrateur
Commentaire de PCPT le 13/01/2008 18:00:41 administrateur CS

voilà une MAJ relativement importante, SQLSERVER200 est maintenant totalement fonctionnel et intégré, tant pour les créations de tables, listings de champs, requêtes, taille, duplication, compaquetage etc....
MYSQL a aussi bien évolué

j'ai aussi revu disons.. toute la todolist, voir le détail dans la source.

j'ai changé le niveau (1 vers 2) parce que c'est pas forcément si évident de s'y retrouver dans ces 1700 lignes....

pour rappel, le principal intérêt et de pouvoir communiquer avec des bases de types différents sans avoir à changer son code.

c'est à dire qu'il y aurait juste une ou 2 propriétés à changer (genre l'IP, le mot de passe) et rien d'autre, sacré gain, de temps non ^^


pour le moment la classe semble rencontrer un problème avec SQLSERVER2005 (délai dépassé mais je pense que l'erreur est fausse), je m'y pencherai plus tard

n'hésitez pas à tester et à me demander d'autres types de bases (fox, oracle, etc...) en précisant alors comment me procurer le moteur et/ou une base exemple pour les tests

++ ;)

signaler à un administrateur
Commentaire de Exploreur le 13/01/2008 20:17:55

Salut PCPT,

Pas eu vraiment bien le temps de bien regarder ta source en profondeur, mais déjà au niveau de la présentation du code c'est impécable(comme dans ton habitude)et au niveau fonctionnel pas encore fait tous les tests mais déjà, je peux dire que ta source va m'en faire voir de toutes les couleurs(dans le bon sens)...Je ne peux juste dire que c'est une source très bien pensée et réfléchie qui auras un avantage certains pour les débutants comme moi, même si la source et du niveau Initié(ce qui est normal), en la prenant tranquillement, je pense que l'on peut faire des sources plus très intéréssante et bien posée.

En tout cas un grand merci de ce que tu apportes aux débutants qui veulent se lancer dans les Bdd comme "moi"...

Et....effectivement c'est une belle surprise !

Notes : Le seul "truc" ((rien d'insurmontable),mais c'est moi...j'ai pas de chance..lol...tu le sais...lol..), faut lancer l'application en 1024*768...bouhhhh, mon 1024*768 il n'existe plus...

A+
Exploreur  

signaler à un administrateur
Commentaire de pluplu le 16/03/2008 22:48:24

Salut PCPT,

Génial ta classe pour simplifier la connexion entre divers bases de données. J'essaie par contre de relier un listfield d'un datacombo à un objet AfCls_ADO, et c'est un peu plus galère ça semble fonctionner pour la propriété ListField, mais je ne parviens pas pour la propriété Rowsource aurais tu une idée ??
      
DbcCategory.RowSource = MyAdo.RSObjRecordSet(1).??
DbcCategory.ListField = MyAdo.RSObjRecordSet(1).Fields![Category]

signaler à un administrateur
Commentaire de PCPT le 16/03/2008 23:24:43 administrateur CS

salut Pluplu, merci pour ton comm.

umm, j'ai pas trop l'habitude d'utiliser d'objets pour faire les liaisons (d'où la classe...) donc :s

si tu peux me faire parvenir un projet complet (DBCombo <> DataCombo, etc....), je regarderai en détail.

à savoir que la classe renvoie tant un objet Recordset que Connection donc théoriquement tout est faisable ;)

++

signaler à un administrateur
Commentaire de steavelawson le 28/05/2008 19:09:49 9/10

Fantastique boulot!! merci beaucoup, pour moi qui suis habitué à windev, ca me fait du dépaysement de bosser sous access(stage oblige). j'ai un développement en cours qui m'oblige à en passer par l'ADO; donc je potasse au possible ton oeuvre; néanmoins j'ai un petit souci. les *.frm posent pb à l'ouverture sous access 2003; j'ai pas encore bien capté ce qui se semble poser problème :((

signaler à un administrateur
Commentaire de PCPT le 28/05/2008 19:25:11 administrateur CS

ce qui pose problème est que mon projet est en VB6, access "pur" c'est du VBA ;)

néanmoins je ne pense pas que la classe ait besoin de modif pour être compatible, du moment que tu charges les bonnes références (précisées dans l'entête)

plus d'infos sur le contenu des sources :
http://www.vbfrance.com/doc/faq.aspx#vb_src

++ et merci pour ton comm ;)

signaler à un administrateur
Commentaire de steavelawson le 29/05/2008 13:58:23

effectivement les classes n'ont pas besoin d'être changé, mais quant aux *.frm je vais les reconstituer manuellement pour les refaire dans access 2003.
bon je potasse ca vite, vite , mon bosse me harcele

signaler à un administrateur
Commentaire de steavelawson le 29/05/2008 15:23:01

il y a un petit souci dans la définition de la classe AfCls_ADO:
dans la section classe/objet tu as défini l'instruction suivante:Dim oStream As ADODB.Stream en regardant dans l'inspecteur d'objets ADODB, le membre Stream n'y est pas :(
qu'est ce qui pourrait faire l'affaire dans le modèle objet d'access2003?
l'autre souci c'est que je coche les références exigées, mais elles sont systématiquement décochées et j'ai un messagebox qui dit "nom de module, de projet ou de biblio déja utilisé" :(
merci d'avance...

signaler à un administrateur
Commentaire de PCPT le 29/05/2008 15:50:51 administrateur CS

à mon avis (mais pas certain, je ne touche pas trop à VBA et n'ai même pas le 2003 pour tester) tu as 2 références à ADO, peut-être une 2.5 et une 2.6, ou un truc dans ce goût là...

décoche les références ADO et recoche uniquement la bonne.

sous VB6, code fonctionnel avec ADO 2.7, 2.8 et 2.81
nb : 2.81 = 2.80 + sp1
(pas testé avec des versions antérieures)

tu peux éventuellement tester ta version MDAC avec ce snippet :
http://www.codyx.org/snippet_connaitre-version-mdac-installe_511.aspx

si ton MDAC n'est pas récent :
http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c

++

signaler à un administrateur
Commentaire de steavelawson le 29/05/2008 19:35:59

bon finalement, après discussion avec le boss, il a décidé de repasser au DAO, plutôt que de poursuivre avec ADO. je vais continuer à chercher pour ma curiosité personnelle en son temps un peu plus tard!
et merci encore de m'avoir accordé un peu de ton temps.

signaler à un administrateur
Commentaire de PCPT le 08/06/2008 22:23:13 administrateur CS

pluplu -> je repassais par là....
j'ai testé en posant un DataCombo (MSDATLST.OCX), le code suivant fonctionne :

AfAdo.SqlRequest = "SELECT * FROM `MOTS`;"
AfAdo.SqlExecute
Set DataCombo1.RowSource = Frm_Main.AfAdo.RSObjRecordSet(1)
DataCombo1.ListField = "Lib_Mot"

++ pluplu ^^

signaler à un administrateur
Commentaire de pluplu le 13/06/2008 22:45:47

Merci PCPT, je vais réessayer tout cela

signaler à un administrateur
Commentaire de ingstat le 02/09/2008 11:57:18

Impecable,
t vraiment le boss.
Merci pour ce travail

signaler à un administrateur
Commentaire de Fremarx le 30/09/2008 10:23:03 10/10

Très propre et très pro je me demande si nous autres arriverons à un tel niveau de programmation un jour.

Juste pour te dire que ton travail m'ôte une épine du pied je cherchais depuis belle lurette comment faire ce genre connexions.

Un question je ne sais pas si il faudrait la posée mais je le fais néanmoins. Je veux faire un programme avec comme pour BDD MYSQL, ma question est la suivante
     - Où puis je trouver ma BDD sachant que j'utilise Easyphp pour le faire?
     - Est ce que le client aura besoin que je lui installe Easyphp  avant que le programme ne fonctionne correctement?
     - Dois je à chaque exécution lancer Easyphp?
D'avance merci pour ton aide et merci pour ta source qui est très bien fournie.

signaler à un administrateur
Commentaire de PCPT le 30/09/2008 14:23:52 administrateur CS

Fremarx -> merci :p

"- Où puis je trouver ma BDD sachant que j'utilise Easyphp pour le faire?"
=> comment çà "où"? physiquement tes bases en local sont dans le dossier d'easy-php, dans 'bin\database' je crois (je n'ai plus easyphp sur mon poste), dans un dossier à leur nom, contenant 2 à 3 fichiers par base

"- Est ce que le client aura besoin que je lui installe Easyphp"
=> le but des bases à connexion distante étant une base à joindre en lan ou en wan, le client n'a que besoin du MDAC pour le fonctionnement d'ADO, mais pas des outils d'administration ni d'un quelconque moteur

"- Dois je à chaque exécution lancer Easyphp?"
=> le poste serveur doit en effet avoir le MOTEUR MySQL de lancé.
il ne faut pas oublier qu'easyPHP n'est pas un moteur mais un PACK contenant le moteur PHP, le moteur mySQL, et des outils d'administration

d'autres packs existent (comme WAMP que je préfère personnellement pour le php). il n'y a pas forcément besoin de lancer tout le pack, c'est surtout le moteur MySQL qui doit être démarré

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Access, Mysql ou SqlServer [ par greg13 ] Est-ce mieux d'utiliser Access, Mysql ou SqlServer pour fair une base de donnée et quelle sont les différence, et comment ca marche surtout? A l'aide Novice prog VBA access [ par freechelmi ] bonjour j essaie dse faire un formulaire pemettant la moise a jour d une base sous access donc l'utilisateur donne la nouvelle valeur d un champ et je vb - access - mysql [ par valerie ] Bonjour,Je viens de transférer une base access vers mysql.J'ai utilisé exporter dans Access. Toutes mes données ont été transférée sans probleme.Par c Tables SQLSERVER Liées dans ACCESS [ par blowlagoon ] Bonjour,Je souhaitais savoir si est-il possible de liées une table SQLSErver dans Access sous spécifier une clé primaire. Car je souhaite lier des tab Tables SQLServer liées sous Access [ par blowlagoon ] Bonjour,J'ai un nombre de table dans une base SQLServer2000 qui ne contienent pas de clés ni primaires ni etrangère. Lors de la liason de ces tables s Tables SQLServer liées sous Access [ par blowlagoon ] Bonjour,J'ai un nombre de table dans une base SQLServer2000 qui ne contienent pas de clés ni primaires ni etrangère. Lors de la liason de ces tables s Tables SQLServer liées sous Access [ par blowlagoon ] Bonjour,J'ai un nombre de table dans une base SQLServer2000 qui ne contienent pas de clés ni primaires ni etrangère. Lors de la liason de ces tables s Access ou MySql [ par franckP ] FranckPJ'ai une appli VB6 a faire ( gestionnaire de projet - Clients, fournisseurs , projets ....).C'est une petite societe de 30 personnes.donc 30 co Tables Access importées sous SQLServer [ par blowlagoon ] Bonjour,J'ai une base de données SQLServer dans laquelle j'importe des tables Access97. Certaine de ces tables contienent des champs qui sont clés pri Tables Access importées sous SQLServer [ par blowlagoon ] Bonjour,J'ai une base de données SQLServer dans laquelle j'importe des tables Access97. Certaine de ces tables contienent des champs qui sont clés pri


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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,811 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é.