【问题标题】:VB sxript to make a questionaire form in MS Access 2010VBscript 在 MS Access 2010 中制作问卷表格
【发布时间】:2012-05-24 18:43:18
【问题描述】:

您好,我只是想知道如何在访问中制作一个持续的调查表,一旦所有问题都被填写,它将更新所有表格。但在它到达页面末尾之前,用户将能够在表单之间来回编辑。

所以它会是这样的:

  1. 总共 30 个表格
  2. 一个表单只更新表中的 1-3 个字段
  3. 用户完成一个表单后,该表单将关闭并打开另一个表单。
  4. 用户将能够返回到以前的表单并对其进行编辑。
  5. 只有两个按钮后退箭头和下一个箭头可用的按钮(保存数据并移动到另一个表单并关闭当前表单)
  6. 最后一个表单将保存所有数据。
  7. 当用户完成所有问题后,表单将允许从第一个问题重新打开,并将在表格中插入全新的用户数据行。

我做过的是

  1. 我创建了一个带有框和标签的表单,直接连接到表格,因此它会实时更新。所以用户可以来回编辑它
  2. “下一步”按钮,使用宏关闭和打开新表单。
  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
    

问题:

  1. 上面的最后一页脚本根本不会将数据插入到表中。
  2. 如果我对表中的列进行索引,它可以将数据插入表中,但如果我进行大量更新,它最终会变得混乱

我的问题:

  1. 谁能建议我正确的 VB 脚本来执行此连续表单活动,而不是按表单更新整个表格。
  2. 如何创建一个类似于 access 2003 的表单,在该表单上,我可以创建仅限用户登录的交换机,以及仅为管理员提供对数据库的特殊登录访问权限,因此它就像一个应用程序。 (我使用 Access 2010 .accdb 文件)

抱歉,这篇文章很长,只是想确保一切都清楚,任何答案将不胜感激。 提前谢谢你

【问题讨论】:

    标签: ms-access vbscript ms-access-2007 vba ms-access-2010


    【解决方案1】:

    关于你的第一个问题:

    这是绑定表单可以证明很方便的情况之一。

    您可以使用INSERT INTO,但您需要为每个表单生成不同的查询以避免错误。但是,如果您将所有表单设置为绑定到同一个表格,则表单字段可以直接与表格交互,而无需大量代码。

    尝试以下示例,使用 3 个表单(尽管您可以轻松地将其扩展到 30 个表单)。

    每个表格都有:

    1. 隐藏字段,ctlID(绑定到表的 ID 字段)
    2. 任意数量的其他字段,绑定到表中的匹配字段
    3. “下一步”按钮,cmdNext(或者在最后一个表单的情况下,cmdFinish

    您可以使用DoCmd.OpenFormWhereCondition 参数在多个表单中继续引用同一记录。

    代码如下:

    ' 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 2011-04-22
      相关资源
      最近更新 更多