要使用vb.net从MS-Access表单计算Activex控件,我将使用连接作为以下内容..
oDBEngine = oAccess.DBEngine oDB = oDBEngine.OpenDatabase(Name:= strFullFileName,Options:= False,ReadOnly:= False,Connect:=“”)
并在设计模式中打开表单,因为有一个用户输入提示表单,如果我们在默认视图中打开它,则阻止我们进一步运行该应用程序。
oAccess.DoCmd.OpenForm(FormName:= objForms.Name,View:= AcFormView.acDesign)
现在的问题是:
DataBase打开,并且在运行应用程序时打开所有表单。无论如何我们只是在阅读表格时阻止打开数据库和表单。
谢谢。
答案 0 :(得分:2)
听起来像一个未分离的应用程序(单个MDB文件中的表和表单等),并且它被多个用户共享。这是一个灾难性的场景。有关所有详细信息,请参阅Splitting your Microsoft Access MDB into a front end and back end。
一旦拆分,您就可以处理单个副本,然后将更新分发给用户。关键是,自2000版以来,任何用户打开Access MDB(而不是数据)的设计都无法编辑。
答案 1 :(得分:1)
它可能适合使用新的空数据库并以编程方式导入表单。可以从MSysObjects获取表单列表(表单类型为-32768)。
例如:
SELECT MsysObjects.Name
FROM MsysObjects IN 'C:\docs\LTD.mdb'
WHERE MsysObjects.Type=-32768
编辑评论 此代码将放在BLANK 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