[La solu proposée utilise VB6 mais devrais fonctionner aussi avec VB4 et 5]
La réponse de VB Man est excellente, mais laisse moi te soumettre la mienne qui utilise plutôt la référence à "Microsoft DAO 3.51 Object Librairy":
Sur une forme ajoute: Un premier bouton nommé Btn_Ouvrir Un second nommé Btn_Rechercher Un TextBox nommé Text1 Un ListeBox nommé List1 Un module (.BAS)
dans la Forme ajoute:
Private Sub Btn_Ouvrir_Click() Dim Retour As Long Dim NombreTables As Integer Dim Cmpt As Integer
On Error GoTo ErrHndBO
With CommonDialog1 .CancelError = True .DialogTitle = "Ouvrir une base de données" .Filter = "Fichier Access(.MDB)|*.mdb" .flags = cdlFILEMUSTEXIST Or cdlHIDEREADONLY Or cdlPATHMUSTEXIST .InitDir = App.Path Retour = .ShowOpen(Me.hwnd) DoEvents ' ' .FileName = nom complet à partir de la racine soit "C:RépFichier.MDB" ' .FileTitle = nom seul, soit "Fichier.MDB" ' If (Retour <> cdlCancel) Then Set DBOuverte = DBEngine.OpenDatabase(.FileName, True, True) List1.Clear NombreTables = DBOuverte.TableDefs.Count For Cmpt = 0 To (NombreTables - 1) List1.AddItem DBOuverte.TableDefs(Cmpt).Name Next Cmpt Else Exit Sub End If End With Exit Sub ErrHndBO: MsgBox "L'erreur suivante est survenue: " & Str$(Err.Number) & " (" & Err.Description & ")", vbOKOnly + vbCritical, "Ouverture d'une base de données" End Sub
Private Sub Btn_Rechercher_Click() Dim RSTemp1 As Recordset Dim TableRc As String On Error GoTo ErrHndBR TableRc = Trim$(Text1) If (TableRc <> vbNullString) Then Set RSTemp1 = DBOuverte.OpenRecordset(TableRc, dbOpenTable) RSTemp1.Close MsgBox "La table '" & TableRc & "' existe.", vbOKOnly + vbInformation, "Résultat de la recherche" Else MsgBox "Vous n'avez rien entré!", vbOKOnly, "Erreur de requête" End If Exit Sub ErrHndBR: MsgBox "La table '" & TableRc & "' n'existe pas.", vbOKOnly + vbMsgBoxRight + vbExclamation, "Résultat de la recherche" End Sub
Private Sub Form_Load() List1.Clear Text1 = vbNullString End Sub
===========
Puis dans le module:
Global CommonDialog1 As New MKCommonDialogCls Global DBOuverte As Database
===========
Tu dois aller dans la section API du site et consulter "CLASSE COMMONDIALOG SANS L'OCX" de Amonbofis, prend sa classe.
Oui c'est compliqué comme procédure et tu devras sûrement indiquer où sont les fichiers de Amonbofis, mais je crois que cela vaux la peine, continuons...
Bon à titre d'essai, quand tu clique Btn_Ouvrir, un Common Dialog de Windows vas s'ouvrir, tu choisi n'importe quel fichier Access et la liste se remplira des noms. Maintenant, tu peux soit taper un nom dans Text1 et cliquer Btn_Rechercher ou taper l'un des noms dans la liste (suivit de Btn_Rechercher) afin de comprendre comment le code fonctionne.
------------------------------- Réponse au message : -------------------------------
Bien moi pour vérifié si une table existe je fais ceci:
With Data1 Err.Clear .DataBaseName = "C:Ma BD.mdb" .RecordSource = "MaTable" .Refresh If Err Then .DataBase.Close 'Il y à eu une erreur Err.Clear End If .DataBase.Close End With
Ok ce n'est peut-être pas la meilleur solution mais ca fonctionne du moin chez moi. Tu peut vérifier l'existance de la BD avant de l'envoyer au control Data de cette manière tu va savoir que si il y à une erreur ca ne seras pas parce que la BD n'existe pas! Tu peut essayer aussi de cette manière:
'En effectuant un test
With Data1 Err.Clear .DataBaseName = "C:Ma BD.mdb" 'Tu lui envoie le nom d'une table qui n'existe pas dans ta BD .RecordSource = "MaTable" .Refresh If Err Then .DataBase.Close 'Il y à eu une erreur MsgBox "Erreur numéro : " & Err.Number & ", " & Err.Description, vbCritical, App.Title Err.Clear End If .DataBase.Close End With
Et maintenant que tu connais le numéro de l'erreur et la description tu peut mieux gérer les erreurs qui pourrais y avoir!!!
------------------------------- Réponse au message : -------------------------------
Salut,
Je souhaite permettre a un utilisateur de choisir la table sur laquelle il travaille. Mon probleme reside dans le fait de savoir si cette table existe ou non ?
Et eventuellemnt comment faire pour creer un boite de dialogue permettant la selection d'un fichier ... Boite de dialogue qui me transmettrait ensuite le chemin d'acces au fichier choisi.
Merci, ------------------------------- -------------------------------
|