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 !

MINI TUTO ADO/ACCESS


Information sur la source

Catégorie :Base de Donnees Classé sous : access, ado, base, donnees Niveau : Débutant Date de création : 20/07/2006 Date de mise à jour : 21/07/2006 11:02:12 Vu / téléchargé: 10 396 / 2 416

Note :
10 / 10 - par 4 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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


Description

Cliquez pour voir la capture en taille normale
Voila, ce code à deux objectifs :

1°-Pour répondre à une demande du Forum
2°-Car je m'apperçoit que beaucoup de gens utilise encore le composant DAO pour acceder à leur base de données.

Il s'agit là d'un vraiment mini tuto sur le composant ADO.
Vous n'y appendrez pas comment réaliser votre base sous ACCESS mais uniquement comment la manipuler depuis votre application VB6.

Si vous souhaitez apporter un complément d'information où si une erreur s'est glissé dans le code faite le moi savoir.

J'ai choisie une façon de présenter ce tuto plutôt originale, à savoir l'utilisation des Agents Microsoft.
Il vous faudra donc installer les composants nécessaires à cette adresse.
http://www.microsoft.com/msagent/downloads/user.asp

Composants à installer :

-Microsoft Agent and localization support (395 Kb)
http://activex.microsoft.com/activex/controls/agent2/MSagent.exe

- Langue français pour Microsoft Agent and localization support

- Microsoft Agent character files (Choisir et installer le Génie)

- Text-to-speech engines (en français)

- SAPI 4.0 runtime
http://activex.microsoft.com/activex/controls/sapi/spchapi.exe

- Speech control (facultatif)
http://download.microsoft.com/download/c/9/e/c9ee5f5d-7631-4ee7-aee4-dbd22b2b1439/SpchCpl.exe
 

Conclusion

J'ai utilisé plusieurs codes trouvés sur ce site et ailleus. Les liens vers les codes originaux sont mis au début des modules concernés.

 

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

21 juillet 2006 11:02:12 :
Quelques correctifs mineurs.

Commentaires et avis

signaler à un administrateur
Commentaire de PCPT le 20/07/2006 22:37:16 administrateur CS

salut,
bon, à l'attaque :


*quelques fautes de français
*classe clsAgent.cls fournie inutilisée
*form principale trop petite au démarrage (donc image illisible), voir pour faire un test selon résolution client.
*screenshot\8.jpg illisible même en fullscreen
*petit problème de gestion frame disabled (pas toujours comme il se devrait)
*toujours faché avec "option explicit" ?
*compagnon... qui ne s'arrête jamais... il ne s'arrête pas quand on click ailleurs, donc 4 5 click et on est parti pour une nuit blanche^^
*petit regret pour les modules et ctl non-cités/signés (auteurs)

voilà les gros points.
à côté de çà, l'esthétique (basique) est extrêment claire et conviviale.
le code du "tuto" par lui-même est très lisible. (aucun 'commentaire et il n'y a vraiment pas besoin.)
le tuto par lui-même est une approche agréable. un peu déçu par contre de ses limites... c'est vraiment la première approche. il est probable que celui qui peut avoir besoin de cette source ne sera pas apte à installer toutes les dépendances nécessaires :( (à laisser néanmoins)

si tu comptes le mettre à jour alors une idée serait de le tourner à la "didacticiel".
fournir un 2e projet avec base, et montrer les démarches pas à pas, que l'utilisateur suit consciencieusement.

pourquoi pas même voir pour base access / mysql / sqlserver...

(je note 10 quand même)

++
PCPT  [AFCK]

signaler à un administrateur
Commentaire de romagny13 le 20/07/2006 23:14:35

oui
mais bon ca commence a dater,
enfin apparemment y a toujours de nombreux adeptes de VB 6 mais bon qd meme
faudrait qd meme penser a passer a VB2005 non ? lool pasque quand je vois des objets recordset oulaa alors qu'on est a ADO.NET 2.0 et ...
++

signaler à un administrateur
Commentaire de bouv le 21/07/2006 08:21:48

Salut,
merci pour vos commentaires

Romagny13>>Pour moi VB.Net, faut même pas y penser. J'ai essayer, et mes conclusions sont "BEAUCOUP TROP LOURDS" et donc évidement "TROP LENT". Même avec une bécane puissante, une application VB6 tourne toujours plus vite qu'une application .NET

PCPT>>Je vais revoir un peu tout ça, j'ai du poster dans la précipitation hier. Cela dit, l'important pour moi n'était pas le code (raison pour laquelle il n'est pas commenté), mais le tuto en lui même.
-Fautes de français : je vais corrigé
-ClsAgent : Va être supprimée
-form principale : plus grand au démarrage
-frame disabled : il faut que je vois ça
-Option Explicit : lol, oui faut que j'ajoute
-Je vais essayer de retrouver les auteurs des sources
-Sinon pour le compagnon tu peux l'arreter avec le bouton "Arreter". Il finira cependant la phrase en cours.

Sinon pour MySQL et SQL Server, je ne connais pas, et je serai le premier heureux d'avoir un tuto.

signaler à un administrateur
Commentaire de bouv le 21/07/2006 11:07:45

-Fautes de français corrigées (j'espère qu'il n'y en a plus).
-ClsAgent supprimé
-Form princpale plus grande au démarrage
-frame disabled : pb corrigé
-Option Explicit ajouté
-Auteurs des sources utilisés cités dans les modules concernés.
-Bouton arreter modifier. L'agent n'attend plus la fin de sa phrase.
-Le ScreenShot 8 s'affiche désormais en 2 fois.

Sinon pour l'histoire du didactitiel, je n'ai pas beaucoup de temps en ce moment, mais j'essaierai de faire ça plus tard, peut être en août.
Par contre s'il y des problèmes avec cette source je modifierai avant ;-)

signaler à un administrateur
Commentaire de pluplu le 21/07/2006 11:26:44

Il y a de bonnes idées, ce qui est un peu casse pied c'est l'agent c'est joli pour l'effet mais ces explications sont d'une lenteur. Pour ce qui est de SQL Server le code n'est pas très différent, mise a part la chaine de connection à la DB.
Pour ce qui est de la remarque de Romagny, je ne vais pas relancer le débat, mais pourquoi vouloir mettre à la poubelle ce bon vieux VB6 quand il suffit amplement à de nombreuses applications. Il ne faut pas sous pretexte d'une évolution (si évolution il y a) suivre aveuglement microsoft comme des petits moutons.

signaler à un administrateur
Commentaire de bouv le 21/07/2006 11:36:08

Merci pour le commentaire.
Pour la lenteur de l'agent, c'est réglable, mais j'ai laissé la vitesse d'origine car :
-C'est destiné à des débutants et il faut qu'ils assimillent.
-Je n'ai pas pensé à la changée ;-)

Sinon, je ne suis pas très sûr mais pour SQL Server, il me semble que changé la chaine de connection ne suffit pas. Il doit falloir passer par un poste serveur, utiliser un identifiant et un mot de passe pour s'y connecter, et enregistrer la base dans la liste des bases SQL Server. Dites mois si je me trompe.

signaler à un administrateur
Commentaire de PCPT le 21/07/2006 11:42:42 administrateur CS

tu te trompes ^^

signaler à un administrateur
Commentaire de pluplu le 21/07/2006 11:50:04

Pour SQL Server je voulais dire que ton tutoriel n'a pas besoin de grandes modifications. Il vas sans dire que pour exploiter une base sous SQL-Server il faut installer un SQL Serveur, ou MSDE qui est un serveur SQL light gratuit gracieusement offert par Microsoft. l'un ou l'autre peuvent être installé sur un serveur ou sur un simple PC rien n'empêche d'utiliser le même PC à la fois comme serveur et client SQL.

signaler à un administrateur
Commentaire de bouv le 21/07/2006 12:13:09

Voila qui me réjouit.
Mais une fois MSDE installé. Que faire ? Quelle chaine de connection appeler ?

signaler à un administrateur
Commentaire de PCPT le 21/07/2006 12:22:29 administrateur CS

voici des extraits sous ado




MYSQL :


Public Function CreateConnection() As Boolean
    Call ClearError
    On Local Error GoTo Err_Handler
        If Not (oCon Is Nothing) Then Set oCon = Nothing
        
        Set oCon = New ADODB.Connection
        With oCon
            .ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & _
                                "SERVER=" & mServer & ";" & _
                                "DATABASE=" & mName & ";" & _
                                "UID=" & mUser & ";" & _
                                "PWD=" & mMdp & ";" & _
                                "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384
        
            .CursorLocation = adUseClient
            .ConnectionTimeout = 1
            .CommandTimeout = 1
            .Open
        End With
    On Error GoTo 0
    CreateConnection = True
    Exit Function
    
    
Err_Handler:
    mErrNumber = Err.Number
    mErrSource = "CreateConnection"
    mErrDescrip = Err.Description
    Err.Clear
    Set oCon = Nothing
    CreateConnection = False
End Function




SQLSERVEUR2000 :


Public Function CreateConnection() As Boolean
    Call ClearError
    On Error GoTo Err_Handler
        If Not (oCon Is Nothing) Then Set oCon = Nothing
        
        Set oCon = New ADODB.Connection
        oCon.ConnectionString = "uid=;pwd=" & mMdp & ";driver={SQL Server}; server=" & mServer & ";database=" & mName & ";dsn="
        oCon.ConnectionTimeout = 1
        oCon.CommandTimeout = 1
        oCon.Open
    
    On Error GoTo 0
    CreateConnection = True
    Exit Function
    
    
Err_Handler:
    mErrNumber = Err.Number
    mErrSource = "CreateConnection"
    mErrDescrip = Err.Description
    Err.Clear
    Set oCon = Nothing
    CreateConnection = False
End Function

signaler à un administrateur
Commentaire de bouv le 21/07/2006 14:05:58

OK, mais quelles valeurs affecter à :

Pour SQLServer :
- mServer
- mName

Pour MySQL :
- mServer
- mName
- mUser

signaler à un administrateur
Commentaire de PCPT le 21/07/2006 14:34:14 administrateur CS

c'est des extrait de classes, donc à adapter (ou en MP si tu veux...., sources jamais postées)




SQLSERVER :

    CLS.DataServer = NOM_DE_TA_MACHINE '(ou localhost ou 127.0.0.1)
    CLS.Password = MOT_DE_PASSE_CONFIGURé_DANS_SQL '(ou vbNullString par défaut)
    CLS.DataName = NOM_DE_TA_BASE '("Pubs" par exemple, fournie)


MYSQL :

    CLS.DataServer = Txt_Host.Text '(localhost ou 127.0.0.1)
    CLS.DataName = NOM_DE_TA_BASE
    CLS.DataUser = "root" '(ou autre si tu changes les accès)
    CLS.DataPassword = MOT_DE_PASSE_CONFIGURé_DANS_EASYPHP-APACHE '(ou vbNullString par défaut)

signaler à un administrateur
Commentaire de bouv le 21/07/2006 15:21:49

OK, je sais que je suis lourd mais, on ne fait que donné un nom à la base (CLS.DataName), jamais le chemin de cette base.
Alors comment le moteur SQLServer ou MySQL savent-il où se trouve la base.

signaler à un administrateur
Commentaire de PCPT le 21/07/2006 15:36:56 administrateur CS

grâce au DataServer. la connection n'est pas la même conception qu'une base access...
tu joins le serveur (par son nom) et si tu as les droits (user pass), tu peux joindre la base choisie et y accéder ensuite par des rs comme access
++

signaler à un administrateur
Commentaire de bouv le 21/07/2006 15:43:55

Qu'est ce que le DataServer ?

"tu joins le serveur (par son nom)" ?
Cela signifie que c'est le serveur qui connait le chemin de la base ? Si oui comment le sait-il ?

Essai de m'expliquer comme à un enfant de 8 ans STP, car là je suis perdu.

signaler à un administrateur
Commentaire de PCPT le 21/07/2006 16:28:18 administrateur CS

ok désolé....

principe "à peu près" identique pour MYSQL et SQLSERVER....
je vais rester sur l'exemple de SQLSERVER en local.

"DataServer" ici c'est le nom de ma propriété (puisque c'est une classe).
la classe va donc modifier sa variable mName.

pour joindre la base tu as besoin d'un moteur/interpréteur. c'est SQLSERVER. il doit donc être lancé.

à la connection (après initialisation des variables, voir post de 14:34:14), tu vas donc joindre ton serveur (le moteur SQLS en local).
le moteur regarde selon les droits, le nombre d'utilisateurs, etc... et accepte (ou non) la connection.
tu veux aller sur la base "pubs", c'est SQLS qui va t'y mener.
chez moi elle se trouve dans "P:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf", mais ni l'utilisateur ni même le dev (connection distante par exemple) n'a besoin ni ne peut savoir où elle se trouve.
compare çà a un dossier partagé par exemple, ou un disque virtuel...

pour MySql, apache se fie à ses fichiers (my.ini)
çà doit être plus ou moins le même pour SQLS

base ok, tu joins ta table.
je ne rentre pas dans le détail des droits (que je ne maitrise pas de toutes manières) qui sont très différents entre MYSQL et SQLS.
(mysql = droits selon user. sqls = droits selon user, table, accès, date, requête, etc...)

voilà en gros le raisonnement.
j'espère que tu t'y retrouves un peu mieux... ;)

signaler à un administrateur
Commentaire de bouv le 21/07/2006 16:39:33

ok merci, je comprend un peu mieux maintenant.
Mais j'ai encore une interrogation.

Qui définit au SQLS où se trouve la base ? Et comment ?

signaler à un administrateur
Commentaire de PCPT le 21/07/2006 16:49:31 administrateur CS

je ne comprends pas ta question.
sqls est un moteur, l'admin peut configurer au départ où stoquer les datas mais c'est tout. sqls se gère seul.
si l'admin veut créer une base, il est obligé de la créer par requêtes.... et donc de passer (avec ses droits) de la même manière qu'un user.
par défaut à l'install, quelques bases sont fournies et "surement" un fichier de config par défaut est installé. mysql c'est certain, sqls je n'ai pas trouvé ce fichier mais même si c'est dans le registre, le principe est le même.

c'est comme si tu demandais "qui dit à IE qu'il doit utiliser <title>titre</title> pour le mettre dans son caption"...
??


moteur autonome (configurable pré-configuré)
oui?

signaler à un administrateur
Commentaire de bouv le 21/07/2006 17:09:51

"tu veux aller sur la base 'pubs', c'est SQLS qui va t'y mener"

Comment SQLS sait-il où se trouve la base 'pubs' ?

signaler à un administrateur
Commentaire de PCPT le 21/07/2006 17:36:55 administrateur CS

c'est un moteur. il se gère d'après le code fait par Kro$oft...
comment est-ce qu'en tapant www.google.fr IE fait pour cibler 66.249.85.99

comment est-ce qu'en tapant "app.path" VB te renvoi le bon chemin...
etc...

signaler à un administrateur
Commentaire de pluplu le 21/07/2006 19:20:25

Pour apporter ma contribution à l'explication de PCPT :

Avec Access et ADO tu as besoin d'indiquer dans ta chaine de connection ou se trouve physiquement la base en lui indiquant l'emplacement du fichier *.mdb

Avec SQL-Serveur tu fais simplement référence au serveur SQL que tu désire atteindre et tu précise simplement le nom de la base sur laquelle tu désire travailler c'est le serveur SQL qui fait l'interface et qui connais l'emplacement des data. Cet emplacement est définis lors de l'installation du serveur SQL par l'administrateur c'est un segment de disque que l'on consacre à SQL-Serveur ce segment n'est pas limité à un disque physique il se peut qu 'il soit sur plusieurs disques physiques voir plusieurs PC. A l'intérieur de ce segment tu peux créer plusieurs dixaines voir centaines de bases.

signaler à un administrateur
Commentaire de bouv le 21/07/2006 22:34:35

Je commence à mieux comprendre.

"tu fais simplement référence au serveur SQL que tu désire atteindre"
cela signifie qu'il peut y avoir plusieurs serveurs d'installés ?

"Cet emplacement est définis lors de l'installation du serveur SQL"
Donc tout doit être paramétré à l'installation de SQLServer. Mais peut on ajouter par la suite de nouvelles bases ? Et comment ?

signaler à un administrateur
Commentaire de MPi le 21/07/2006 23:42:34

Et j'aimerais bien savoir aussi....
Est-ce qu'on peut avoir plusieurs base de données ayant le même nom ?

Avec Access, il suffit de se créer un répertoire différent et y mettre le fichier «MaBase.mdb», disons. On peut donc avoir autant de base «MaBase.mdb» qu'on le désire.

Mais avec SQL Server ? qu'en est-il exactement ?

Michel

signaler à un administrateur
Commentaire de pluplu le 22/07/2006 09:47:50

Bouv> Oui il peut y avoir plusieurs serveurs installés sur une même machine ou sur des machines différentes du réseau. On peut ajouter de nouvelles BD par la suite.

MPI> Non ce n'est pas possible d'avoir des bases de même nom sur le même serveur SQL c'est logique, mais rien n'empêche sur un serveur différent.

Il ne faut pas oublier qu'un SQL-Serveur est destiné avant tout à de grosses bases de données multi-utilisateurs, pour une petite application c'est plustôt de l'artillerie lourde et l'on préfère utiliser Access.

signaler à un administrateur
Commentaire de bouv le 22/07/2006 11:16:19

merci
++

signaler à un administrateur
Commentaire de MPi le 22/07/2006 15:06:03

Merci Pluplu

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

ADO et Access [ par andrea06 ] Bonjour,J'ai une question a propos de la connection ado vers une base de donnees access.J'ai remarque qu'il n'est possible de se connecter a une base VB2008 et Access [ par faycalche ] salut à tous,Je suis debutant en VB, j'ai creé une base de donnees access et des interfaces dans projet  VB(j'ai utilisé Microsoft Visual Basic 2008 E j'arrive pas à voir mes donnees [ par mouletch ] salut, j'ai décevolppé une base de donnees sur access 2003 et j'ai créer l'éxécutable avec Microsoft Office Access 2003 Developer Extensions, je l'ai comment on cree une base de donnees en ADO [ par horko ] question ma foi paraissant toute bete mais que je n ai pas reussi a resoudre.Alors pour l instant je le fait en DAO mais je veux y parvenir en ADO.Att HELP ! URGENT BASE DE DONNEES !!!!! :-( [ par LaMiss ] Help ! je suis debutante en VB et je dois creer des fenetres de saisie et de gestion de tables gérées sous Access 97. Comment faire pour me connecter Importer les donnees Excel a Access [ par mel ] Bonjour,Je un ensemble de fichiers excel que je dois importer un a un dans des differentes tables de ma base de donnees (Access).Mon probleme est que base de donnees avec ADO, ADOX, OLEDB, ODBC??????? [ par Andrea ] Je voudrais me connecter a une base de donnees SQL (situee sur un serveur distant SQLserver2000) a partir d'un programme VB, afin d'y effectuer des no BASE DE DONNEES ACCESS [ par reyman ] J'utilise actuellement dans mon application une base de données ACCESS protégé par un mot de passe.Je manipule donc les données par l'intermédiare d'u datacombo et ADO en VB6 et base access 97 [ par JONAS ] je possede 2 datacombo et j'aimerai connaitre la syntaxe des requetes a utiliser en ADO quand : je clique sur le 1er datacombo, je voudrais que le deu ADO et deux connexions BDD [ par nanebac ] J'ai un petit souci, je souhaite me connecter à une base ACCESS avecADO pour extraire un recordset qui doit être inséré dans une base SQL Pour ce


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode