VBscript 在 MS Access 2010 中制作问卷表格
Posted
技术标签:
【中文标题】VBscript 在 MS Access 2010 中制作问卷表格【英文标题】:VB sxript to make a questionaire form in MS Access 2010 【发布时间】:2012-05-24 18:43:18 【问题描述】:您好,我只是想知道如何在访问中制作一个持续的调查表,一旦所有问题都被填写,它将更新所有表格。但在它到达页面末尾之前,用户将能够在表单之间来回编辑。
所以它会是这样的:
-
总共 30 个表格
一个表单只更新表中的 1-3 个字段
用户完成一个表单后,该表单将关闭并打开另一个表单。
用户将能够返回到以前的表单并对其进行编辑。
只有两个按钮后退箭头和下一个箭头可用的按钮(保存数据并移动到另一个表单并关闭当前表单)
最后一个表单将保存所有数据。
当用户完成所有问题后,表单将允许从第一个问题重新打开,并将在表格中插入全新的用户数据行。
我做过的是
-
我创建了一个带有框和标签的表单,直接连接到表格,因此它会实时更新。所以用户可以来回编辑它
“下一步”按钮,使用宏关闭和打开新表单。
使用以下 VB 代码更新表格的最终形式:
Private Sub Close_Click()
CurrentDb.Execute "INSERT INTO Demographics(vid, cid, dobd, gend, heght, heght2, wgt, wgt2, lschool, secschl, qualify, hqlify, army, abranch )" & _
"VALUES('" & vid1 & "','" & cid1 & "','" & dobd1 & "','" & gend1 & "','" & heght1 & "','" & heght21 & "','" & wgt1 & "','" & wgt21 & "','" & lschool & "','" & secschl1 & "','" & qualify1 & "','" & hqilfy1 & "','" & army1 & "','" & abranch1 & "')"
cmdClear_Click
cmdClose_Click
End Sub
Private Sub cmdClose_Click()
DoCmd.Close
End Sub
Private Sub cmdClear_Click()
vid1 = ""
cid1 = ""
dobd1 = ""
gend1 = ""
heght1 = ""
heght21 = ""
wgt1 = ""
wgt21 = ""
lschool1 = ""
secschl = ""
qualify = ""
hqlify = ""
army = ""
abranch = ""
End Sub
Private Sub Form_Current()
End Sub
问题:
-
上面的最后一页脚本根本不会将数据插入到表中。
如果我对表中的列进行索引,它可以将数据插入表中,但如果我进行大量更新,它最终会变得混乱
我的问题:
-
谁能建议我正确的 VB 脚本来执行此连续表单活动,而不是按表单更新整个表格。
如何创建一个类似于 access 2003 的表单,在该表单上,我可以创建仅限用户登录的交换机,以及仅为管理员提供对数据库的特殊登录访问权限,因此它就像一个应用程序。 (我使用 Access 2010 .accdb 文件)
抱歉,这篇文章很长,只是想确保一切都清楚,任何答案将不胜感激。 提前谢谢你
【问题讨论】:
【参考方案1】:关于你的第一个问题:
这是绑定表单可以证明很方便的情况之一。
您可以使用INSERT INTO
,但您需要为每个表单生成不同的查询以避免错误。但是,如果您将所有表单设置为绑定到同一个表格,则表单字段可以直接与表格交互,而无需大量代码。
尝试以下示例,使用 3 个表单(尽管您可以轻松地将其扩展到 30 个表单)。
每个表格都有:
-
隐藏字段,ctlID(绑定到表的 ID 字段)
任意数量的其他字段,绑定到表中的匹配字段
“下一步”按钮,cmdNext(或者在最后一个表单的情况下,cmdFinish)
您可以使用DoCmd.OpenForm
的WhereCondition
参数在多个表单中继续引用同一记录。
代码如下:
' Form1 code:
Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
End Sub
Private Sub cmdNext_Click()
Dim iID As Long
iID = Me.ctlID.Value
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "Form2", , , "ID = " & iID
End Sub
' Form2 code:
Private Sub cmdNext_Click()
Dim iID As Long
iID = Me.ctlID.Value
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "Form3", , , "ID = " & iID
End Sub
' Form3 code:
Private Sub cmdFinish_Click()
DoCmd.Close acForm, Me.Name
End Sub
【讨论】:
以上是关于VBscript 在 MS Access 2010 中制作问卷表格的主要内容,如果未能解决你的问题,请参考以下文章
使用 VBScript 进行 MS Access MDB 查询
如何通过VBscript检查MS Access中是不是存在表