2009-01-09 72 views
0

读取数据要计算的ActiveX使用我现在用的连接,follws vb.net MS-Access窗体控件打开MS Access数据库..如何防止,同时从形式

oDBEngine = oAccess.DBEngine ODB = oDBEngine.OpenDatabase(名称:= strFullFileName,选项:=假,只读:=假,连接:=“”)

和期初在设计模式的形式,存在用户输入的提示形式,其防止如果我们在“默认”视图中打开它,我们将进一步运行应用程序

oAccess.DoCmd.OpenForm(窗体名称:= objForms.Name,阳台:= AcFormView.acDesign)

现在的问题是:

数据库中获取打开,连同所有的形式开拓同时运行该应用程序。无论如何,我们只是防止在阅读表格时打开数据库和表单。

谢谢。

回答

1

它可能适合使用新的空数据库并以编程方式导入窗体。可以从MSysObjects获取表单列表(表单类型为-32768)。

例如:

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

编辑根据注释 此代码将进入一个空白的Access数据库。

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

是的,这是阅读表格的好方法(No.Of)但是我想阅读每个表格(有多少个Activex控件)。 – Suman 2009-01-09 09:24:51

2

听起来像一个非分离的应用程序(在单个MDB文件中的表和表单/等),并且它被多个用户共享。这是一个灾难性的情况。所有的细节见Splitting your Microsoft Access MDB into a front end and back end

一旦它被分割,你会在单个副本上工作,然后将更新分发给用户。重点是自2000版以来,Access MDB(而不是数据)的设计无法在任何用户打开时进行编辑。