MINI TUTO ADO/ACCESS

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 20 juil. 2006 à 22:37
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 22 juil. 2006 à 15:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38694-mini-tuto-ado-access

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
22 juil. 2006 à 15:06
Merci Pluplu
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
22 juil. 2006 à 11:16
merci
++
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
22 juil. 2006 à 09:47
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.
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 juil. 2006 à 23:42
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
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2006 à 22:34
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 ?
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
21 juil. 2006 à 19:20
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.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 juil. 2006 à 17:36
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...
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2006 à 17:09
"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' ?
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 juil. 2006 à 16:49
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?
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2006 à 16:39
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 ?
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 juil. 2006 à 16:28
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... ;)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2006 à 15:43
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.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 juil. 2006 à 15:36
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
++
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2006 à 15:21
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.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 juil. 2006 à 14:34
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)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2006 à 14:05
OK, mais quelles valeurs affecter à :

Pour SQLServer :
- mServer
- mName

Pour MySQL :
- mServer
- mName
- mUser
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 juil. 2006 à 12:22
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
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2006 à 12:13
Voila qui me réjouit.
Mais une fois MSDE installé. Que faire ? Quelle chaine de connection appeler ?
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
21 juil. 2006 à 11:50
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.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 juil. 2006 à 11:42
tu te trompes ^^
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2006 à 11:36
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.
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
21 juil. 2006 à 11:26
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.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2006 à 11:07
-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 ;-)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2006 à 08:21
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.
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
20 juil. 2006 à 23:14
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 ...
++
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 juil. 2006 à 22:37
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]
Rejoignez-nous