IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

connexion a une base access ,confirmation ?


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut connexion a une base access ,confirmation ?
    Salut,

    Pour me connecter à une base access je fait cela
    Dans un module je fait sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
     
    Public cn As New ADODB.Connection
     
    Public rsass As New ADODB.Recordset
     
     
    Public rsemp As New ADODB.Recordset
     
    Public rsproj As New ADODB.Recordset
    Puis sur ma feuille principale je met cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Form_Load()
    cn.Open "dsn=gestion1"
    '''''on met cursorlocation pour que les find marche
    '''''comme on pourra se deplacer ou on veu dans le recordset
    rsass.CursorLocation = adUseClient
    rsass.Open "Assignement", cn, adOpenDynamic, adLockOptimistic
    rsemp.CursorLocation = adUseClient
    rsemp.Open "Employee", cn, adOpenDynamic, adLockOptimistic
    rsproj.CursorLocation = adUseClient
    rsproj.Open "Project", cn, adOpenDynamic, adLockOptimistic
     
    End Sub
    Et j'aurai aimé savoir si vous procedier comme cela pour vous connecter à une base de donnée Access ?

    Merci d'avance à tous.

  2. #2
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Il y a diverses méthodes que tu peux trouver dans les sources ou dans les tutoriels mais la tienne est bonne !

    Perso je ne passe jamais par un DNS mais, c'est un choix

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    lorsque je fais une connexion à une bd, je crée une source de données (panneau de configuration, ...), puis je crée un module de connection
    à peu près comme le tient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Déclaration des variables globales
     
    Public ConBdd As New ADODB.Connection
    Public RsBdd As New ADODB.Recordset
    Public CmdBdd As New ADODB.Command
    Public Const ChCon = "Biblio1"
    c'est comme ton 1er bout de code.
    Le deuxième boutde code, je ne sais pas à quoi il sert, mais ce quue j'écris me sufiit largement pour faire une connexion.

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    voici un lein pour plus d'infos sur la connexion ado
    http://drq.developpez.com/vb/tutoriels/ADO/

  5. #5
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Le duxième bout fe code crée un recordset c'est-à-dire sélectionne des enregistrements car on peut y associer un SELECT sql. C'est d'ailleurs le but du recordset

    En général le chemin à suivre est tj le même :

    1 la connexion (string) : StrCnn = "Microsoft Oledb Jet 4.0 ......
    2 la connexion proprement dite à la base de donnée qui utilise la connexion défine dans le string
    3 le recordset qui sélectionne les enregistrements

    et il y a différentes manières d'y arriver

  6. #6
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    en faite le 2eme bout de code il me sert a crée un recordset pour chaque table, tu ne fait pas comme cela ?

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    lorsque je déclare mon recordset dans mon module, c'est finit, je l'utilise directement, je ne fais plus d'autres déclarations ailleurs.
    c'est une autre facon de faire!

  8. #8
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    cari quand tu fais cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public RsBdd As New ADODB.Recordset
    tu declare un recordset pour toute tes table ou ta base de contient qu'une seule table ?

    Et si ta base contient plusieurs tables,tes requetes par la suite tu ne les fait pas avec des movefirst,movenext...

  9. #9
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    oui, je déclare un seul recordset pour toutes mes tables.
    par exemple lors de l'ajout sur un formulaire, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     If MsgBox("Voulez-Vous enregistrer ces données?", vbYesNo + vbQuestion, "ATTENTION") = vbYes Then
                ConBdd.Execute ("insert into TAdherent values(" _
                & "'" & Trim(TCodAdh) & "','" & Trim(TNAdh) & "','" & Trim(TPAdh) & "','" & Trim(TAdr) & "'" _
                & " ,'" & Trim(TVil) & "','" & Trim(TBp) & "','" & Trim(TTel) & "','" & Trim(Supp) & "')")
     
                'Confirmation d'enregistrement
                MsgBox "Enregistrement effectué", vbOKOnly + vbExclamation, "VALIDATION"
     
                'Remplissage du combo aprés insertion dans la table
                CmbVil.Clear
                Set RsBdd = ConBdd.Execute(" Select distinct(Ville) from TAdherent ")
                While Not RsBdd.EOF
                        CmbVil.AddItem RsBdd!Ville
                        RsBdd.MoveNext
                Wend

  10. #10
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    ce que j'ai pas dit c'est que lorsque je veux acceder à ma base de donnees de depuis un formulaire, il me faut ouvrir : ouvbase et fermer ma base : fermbase
    d'ou ce bout de code à ajouter dans le module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    'Verifier si la connexion est ouverte et l'etablit
    Public Sub OuvBase()
    If ConBdd.State = adstatedclosed Then
        With ConBdd
        .ConnectionString = ChCon
        .Open ChCon
        End With
    End If
    End Sub
     
    Public Sub CmdBase()
    CmdBdd.ActiveConnection = ConBdd
    End Sub
     
    'verifie et ferme la connexion si elle est ouverte
    Public Sub FermBase()
    If ConBdd.State = adStateOpen Then
        ConBdd.Close
        Set ConBdd = Nothing
    End If
    End Sub

  11. #11
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    et tu vois cet declaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Déclaration des variables globales 
     
    Public ConBdd As New ADODB.Connection 
    Public RsBdd As New ADODB.Recordset 
    Public CmdBdd As New ADODB.Command 
    Public Const ChCon = "Biblio1"
    tu l'a met dans un module à par que t'appel au chargement de ton programme ou tu le met dans le load de chaque feuille ?

  12. #12
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    je les tous dans un module (tous les bouts de codes)

  13. #13
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    il te sert à quoi ton recordset ??
    Et en general en entreprise c 'est command ou recordset simplement qui est utilisé ?

  14. #14
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Il vaut mieux utiliser le recordset pour faire des requêtes sur ta base. a moins que toutes tes tables doivent être accessibles entièrement tout le temps !

    Il ne sert à rien de compliquer les choses. Tu connectes ta base puis tu fais un recordset par table avec, éventuellement, un SELECT si tu n'as pas besoin de tous les champs ou si tu les veux triés d'une certaine manière !

    Je te conseille vivement de lire les tutos consacrés à ADO dans la partie cours et tutotriels : http://vb.developpez.com/cours/ afin de ne pas compliquer inutilement ton code et de ne pas perdre les bons repères que tu donnes dans ton code car il est vraiment très valable

  15. #15
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    ok
    donc en faite
    je peux faire autant de recordset que je veux
    vu que je ne vais les utiliser que sur certains formulaire et pas tous en même temps.

  16. #16
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Exactement

    Bonne programmation

  17. #17
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Bonjour
    Je n'ai pas suivi l'échange, mais je pense que tu pourrais également très valablement regarder du coté des recordsets hiérarchique avec le provider MD DataShape.
    Ce provider te permet de créer simplement un seul recordset avec des tables liéés, avec un code du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Dim SQL As String
     
    Set cn = New ADODB.Connection
    Set rsPub = New ADODB.Recordset
    Set colBndBiblio = New BindingCollection
     
    cn.Provider = "MSDataShape"
    cn.Open "Data Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DidactDB\Biblio2000.mdb"
     
     SQL = "SHAPE {SELECT * FROM Publishers ORDER BY Name} APPEND " & _
            "({SELECT ISBN, PubID, Title, [Year Published], Description, Subject, Notes FROM Titles} " & _
            "AS Title RELATE PubID TO PubID)"
     
    rsPub.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
    rsPub.MoveFirst
     
    'Définit le jeu d'enregistrements comme source de données (DataSource) de la collection Bindings.
    Set colBndBiblio.DataSource = rsPub
    Dans ce bout de code, tu crées un recordset hiérarchique rsPub contenant deux tables (Publishers et Titles), servant de source à une binding collellection (ou à tout autre objet). Tu pourrais le faire avec plus de tables (j'utilise jusqu'à 5 tables, mais on pourrais aller au delà). La relation se fait dans la chaîne SQL par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AS Title RELATE PubID TO PubID
    Tu obtiens alors un recordset hiérarchique pouvant directement être affiché dans une mSHFlexgrid. Tu peux également accéder à une des tables du dit recordset en utilisant (entre autre) son alias. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set DataGrid1.DataSource = rsPub!Title.Value
    permet de définir comme source de la DataGrid la table 'aliassée' Title du recordset. Cela fonctionne exactement comme les objets Command du DataEnvironment (le DE utilise d'ailleurs ce provider).

    Bref, je vois beaucoup d'avantages à utiliser MSDataShape... Si tu veux plus d'info sur le thème, regardes mon praticiel sur les recordsets hiérarchiques, notamment la feuille Grille DataGrid qui contient l'exemple ci-dessus.
    Bon courage.

Discussions similaires

  1. Connexion avec une base access !
    Par PROGDEV2paris dans le forum Débuter
    Réponses: 3
    Dernier message: 07/05/2008, 01h35
  2. pb de connexion a une base ACCESS
    Par steave dans le forum JDBC
    Réponses: 5
    Dernier message: 20/09/2007, 18h04
  3. [VB6]Problème connexion avec une base ACCESS
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 15/05/2006, 17h47
  4. Pb de connexion sur une base access
    Par xave dans le forum ASP
    Réponses: 9
    Dernier message: 17/01/2006, 17h26
  5. Obligation de connexion a une base access
    Par grillpain dans le forum Access
    Réponses: 12
    Dernier message: 12/12/2005, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo