Quel méthode de connexion pour une base access ?

Résolu
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014 - 4 juil. 2006 à 01:00
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 6 juil. 2006 à 11:44
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

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 juil. 2006 à 01:28
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 !
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 juil. 2006 à 11:44
non, normal, c'est pour les requetes qui ne renvoient pas de données....( INSERT, DELETE, UPDATE....)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
3
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
4 juil. 2006 à 08:01
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<>
0
gon_ak Messages postés 197 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 17 novembre 2006
4 juil. 2006 à 10:11
Moi je travaille sur une base Access et tof008 à raison c'est plus rapide et plus stable!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014
4 juil. 2006 à 16:58
Merci je n'ai plus qu'à mis mettre. Avec le .net c'est pareil ? Car je voudrais prochainement mis mettre ...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 juil. 2006 à 22:42
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
0
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014
6 juil. 2006 à 00:30
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"
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 juil. 2006 à 00:38
^^ désolé,

je suis toujours en DAO !

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014
6 juil. 2006 à 10:38
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
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
6 juil. 2006 à 11:24
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>
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 juil. 2006 à 11:33
il est preferable de fermer les recordset.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Robinwood01 Messages postés 153 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 3 juillet 2014
6 juil. 2006 à 11:36
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 ...
0
Rejoignez-nous