Quel méthode de connexion pour une base access ? [Résolu]

Signaler
Messages postés
153
Date d'inscription
jeudi 25 avril 2002
Statut
Membre
Dernière intervention
3 juillet 2014
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Bonjour

Je me remet a programme en VB 6 après avoir arrêté quelques temps.

Je dois faire un programme avec une base access pour gèrer le personnel d'une entreprise soit environs 400 salariés.

Il y a aurra donc tout type de requete, des résultats dans des tableaux, combo, ...

Qu'elle est la meilleur méthode de connexion ?

Car j'ai pris plusieurs source tratant des *.mdb mais il y a plusieurs méthode de tratitement et je ne sais pas les différences ni celle qu'il est préférable d'utiliser.

Merci de m'indiquer des éléments qui pourrait m'aider.

12 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

Je te conseille ces deux tuto :

http://www.vbfrance.com/tutoriaux/CONNEXION-BDD-PARTIR-VISUAL-BASIC-AVEC-ADO_434.aspx

http://www.vbfrance.com/tutoriaux/VB6-ACCES-BASE-DONNEES-ACCESS-ADO_160.aspx

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
non, normal, c'est pour les requetes qui ne renvoient pas de données....( INSERT, DELETE, UPDATE....)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
26
Moi je te conseille même le deuxième c'est le mien looool!
Perso, je penche pour l'ADO, reputé plus rapide et plus stable! (je vais encore me faire taper sur les doigts par les defenseurs du DAO!!!!)
(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire<>
Messages postés
197
Date d'inscription
mardi 28 février 2006
Statut
Membre
Dernière intervention
17 novembre 2006

Moi je travaille sur une base Access et tof008 à raison c'est plus rapide et plus stable!!!
Messages postés
153
Date d'inscription
jeudi 25 avril 2002
Statut
Membre
Dernière intervention
3 juillet 2014

Merci je n'ai plus qu'à mis mettre. Avec le .net c'est pareil ? Car je voudrais prochainement mis mettre ...
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
tof008, j'ai récupéré ton tuto il y a qques semaines mais je ne m'y suis pas encore mis. Je code encore en DAO !! lol

Mais va bien falloir s'y mettre à l'ADO...

++

Mortalino
Messages postés
153
Date d'inscription
jeudi 25 avril 2002
Statut
Membre
Dernière intervention
3 juillet 2014

Comment faire ce code en ADO ?

Je n'y arrive pas.

        Dim A As Access.Application
        Set A = CreateObject("Access.Application")
        A.OpenCurrentDatabase App.Path & "\base\public.mdb", , "test"
        Dim dbs As DAO.Database
        Dim n As Integer
        Dim i As Integer
        Dim C As Container
        Set dbs = A.CurrentDb        Set C dbs.Containers("Reports") 'ou Set C dbs.Containers(4)
            n = C.Documents.Count
            For i = 0 To n - 1
                MsgBox dbs.Containers("Reports")(i).Name
            Next i

De même pour celui la :

A.DoCmd.OutputTo acOutputReport, "état", "SnapshotFormat(*.snp)", App.Path & "\tmp.snp"
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
^^ désolé,

je suis toujours en DAO !

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Messages postés
153
Date d'inscription
jeudi 25 avril 2002
Statut
Membre
Dernière intervention
3 juillet 2014

J'ai plusieurs requete maintenant ca marche plus.

Je vous explique un peu comment j'ai fait.

Une procédure dans un module crée la connexion :

Public Base As Connection
Public Requete As Recordset
Public SQL As String


Public Sub Connexion()
   
    'Initialise les variables de connexion
        Set Base = New Connection
    'Ouverture de la base de données
        Base.ConnectionString = "Provider=Microsoft.Jet.oledb.4.0;Data Source=base.mdb;Jet OLEDB:Database Password=lema2006;"
        Base.Open
        Set Requete = New Recordset
        Requete.ActiveConnection = Base


End sub

Dans le form unload je ferme la base.

C'est bien de laisser ouvert en permanence ou il faut ouvrir et fermer a chaque requete ?

Ensuite dans mes formulaire je fais des requetes un peu partout, pour le moment des INSERT et SELECT.

Dans le bouton ajout :

SQL = "INSERT INTO Personnes (civilité,nom,nom_jeune_fille,prénom,date_entrée,actif,essai,payé,type_emploi,atelier_num_personne) VALUES ('" & cmb_civilité.Text & "','" & txt_nom.Text & "','" & txt_nom_djf.Text & "','" & txt_prénom.Text & "','" & txt_date_entrée.Text & "','" & chk_actif.Value & "','" & chk_essai.Value & "','" & chk_payé.Value & "','" & cmb_type_emploi.Text & "','" & num_atelier & "')"
    
Requete.Open SQL, , adOpenDynamic, adLockPessimistic

Requete.Close
SQL = "SELECT MAX(Num) as Num_personne FROM Personnes"
 
Requete.Open SQL, , adOpenDynamic, adLockPessimistic

    Dim Num_personne As Integer
    Num_personne = Requete!Num_personne
   Requete.Close

J'ai des erreur ou Requete.Close

Il faut bien fermer a la fin de chaque requete ?

Une variable de requete est sufissante pour tout un programme ?

Merci d'avance pour vos infos
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
26
Il me semble que tu n'est pas obligé de tout le temps fermer. Essaie de voir avec les AdLock a quoi il ervent. Il me semble que ca ferme dejà les requetes.... A voir...

(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire< body>
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
il est preferable de fermer les recordset.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
153
Date d'inscription
jeudi 25 avril 2002
Statut
Membre
Dernière intervention
3 juillet 2014

Merci, je vais regarder cependant quand j'enlève tous les requete.close, il me donne une erreur comme quoi il est déjà ouvert.

Sinon j'ai vue que l'on pouvais faire :

Base.Execute(SQL)

Au lieu de : Requete.Open SQL, , adOpenDynamic, adLockPessimistic

J'arrive pour le insert mais pas encore pour le SELECT encore ...