2009-01-09 10 views
0

Pour compter les formes de contrôle Activex MS-Access à l'aide vb.net J'utilise la connexion comme follws ..Comment éviter d'ouvrir une base de données MS Access lors de la lecture des données de formulaires

oDBEngine = oAccess.DBEngine ODB = oDBEngine.OpenDatabase (Nom: = strFullFileName, options: = False, ReadOnly: = False, Connect: = "")

et Openning les formes en mode Conception, car il y a une forme rapide d'entrée utilisateur qui empêche nous pour exécuter l'application plus loin si nous l'ouvrons dans la vue par défaut.

oAccess.DoCmd.OpenForm (FormName: = objForms.Name, Vue: = AcFormView.acDesign)

Maintenant, le problème est:

Le DataBase s'ouvre et avec toutes les formes que ouvrent lors de l'exécution de l'application. Y at-il de toute façon nous empêchons juste d'ouvrir la base de données et les formulaires, tout en lisant les formulaires.

Merci.

Répondre

1

Il peut convenir d'utiliser une nouvelle base de données vide et d'importer les formulaires par programme. Il peut être possible d'obtenir une liste de formulaires à partir de MSysObjects (le type de formulaire est -32768).

Par exemple:

SELECT MsysObjects.Name 
FROM MsysObjects IN 'C:\docs\LTD.mdb' 
WHERE MsysObjects.Type=-32768 

EDIT PAR COMMENTAIRE Ce code irait dans une base de données Access vide.

strSQL = "SELECT MsysObjects.Name " _ 
& "FROM MsysObjects IN 'C:\docs\LTD.mdb' " _ 
& "WHERE MsysObjects.Type = -32768" 

Set rs = CurrentDb.OpenRecordset(strSQL) 

Do While Not rs.EOF 
    DoCmd.TransferDatabase acImport, "Microsoft Access", _ 
    "C:\docs\LTD.mdb", acForm, rs![Name], rs![Name] 

    'Do what ever you wish with form, then ' 

    DoCmd.DeleteObject acForm, rs![Name] 

    rs.MoveNext 
Loop 
+0

Oui, c'est une bonne façon de lire les formulaires (No.Of) Mais je veux lire chaque formulaire (Combien de contrôles Activex présents). – Suman

+0

Je suggère que vous utilisiez le sql pour obtenir une liste de formes et ensuite les importer dans une nouvelle base de données. Voir mes modifications. – Fionnuala

2

Cela ressemble à une application non divisée (tables et formulaires/etc dans un seul fichier MDB), et qu'elle est partagée par plusieurs utilisateurs. C'est un scénario désastreux. Voir Splitting your Microsoft Access MDB into a front end and back end pour tous les détails. Une fois divisé, vous travaillez sur une copie individuelle, puis distribuez les mises à jour aux utilisateurs. Le fait est que depuis la version 2000, la conception d'un MDB Access (par opposition aux données ) ne peut pas être modifiée tant qu'elle est ouverte par n'importe quel utilisateur.

Questions connexes