Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database MS ACCESS VBA编码的提交按钮,用于输入一周中每天的数据_Database_Forms_Ms Access_Vba - Fatal编程技术网

Database MS ACCESS VBA编码的提交按钮,用于输入一周中每天的数据

Database MS ACCESS VBA编码的提交按钮,用于输入一周中每天的数据,database,forms,ms-access,vba,Database,Forms,Ms Access,Vba,我目前正在尝试创建一个表单,以输入一天中分配的小时数 每个条目有5个方面: 日期 资源 计划 位置 小时数 表单的棘手之处在于,我希望能够同时输入任何给定一周中所有5天的记录 表单设置为顶部有4个组合框: 资源 计划 位置 周 底部是5个文本框,每个文本框都标有各自的工作日 我对VBA非常陌生,但从我通过研究收集到的信息来看,实现这一点的最佳方法是通过提交按钮后面的VBA代码 代码需要提交总共5条记录。每周一天记录一次。资源、项目和职位字段将直接来自组合框,并且对于所有5条记录都是相同的

我目前正在尝试创建一个表单,以输入一天中分配的小时数

每个条目有5个方面:

  • 日期
  • 资源
  • 计划
  • 位置
  • 小时数
表单的棘手之处在于,我希望能够同时输入任何给定一周中所有5天的记录

表单设置为顶部有4个组合框:

  • 资源
  • 计划
  • 位置
底部是5个文本框,每个文本框都标有各自的工作日

我对VBA非常陌生,但从我通过研究收集到的信息来看,实现这一点的最佳方法是通过提交按钮后面的VBA代码

代码需要提交总共5条记录。每周一天记录一次。资源、项目和职位字段将直接来自组合框,并且对于所有5条记录都是相同的。小时字段将来自一周中每天对应的5个文本框中的1个。日期字段将使用week组合框填充,但它必须根据提交的记录(星期二+1,星期三+2,…)添加天数

所以我知道我想做什么,但我一直在研究VBA,并试图学习如何实现这一点,这让我非常困惑

我真的很感激任何人能提供任何帮助或建议,我将如何着手设置代码以提交这些记录


提前感谢您的帮助。

您需要SQL Insert语句:

Private Sub SubmitButton_click()
  Dim qry as String
  Dim db as dao.database
  Set db = currentdb

  'First date
  qry = _
    "INSERT INTO YourTable
    "(" & Me.TxtDate1 & ", " & Me.cboResource & ", " & Me.cboProject & ", " & Me.cboPosition & ", " & Me.cboWeek & ");"
  db.execute qry

  'Second Date
  qry = _
    "INSERT INTO YourTable
    "(" & Me.TxtDate2 & ", " & Me.cboResource & ", " & Me.cboProject & ", " & Me.cboPosition & ", " & Me.cboWeek & ");"
  db.execute qry

  'Third Date
  qry = _
    "INSERT INTO YourTable
    "(" & Me.TxtDate3 & ", " & Me.cboResource & ", " & Me.cboProject & ", " & Me.cboPosition & ", " & Me.cboWeek & ");"
  db.execute qry

  'Fourth Date
  qry = _
    "INSERT INTO YourTable
    "(" & Me.TxtDate4 & ", " & Me.cboResource & ", " & Me.cboProject & ", " & Me.cboPosition & ", " & Me.cboWeek & ");"
  db.execute qry

  'Fifth Date
  qry = _
    "INSERT INTO YourTable
    "(" & Me.TxtDate5 & ", " & Me.cboResource & ", " & Me.cboProject & ", " & Me.cboPosition & ", " & Me.cboWeek & ");"
  db.execute qry

  set db = nothing

End Sub
有关insert语句的更多信息:


此代码不适用于现有记录的更改!为此,您需要更新语句:

刚刚解决了这个问题,所以我将发布我的代码,以防有人关心。代码检查所有控件是否已填充,然后循环遍历记录并将其插入表中

Private Sub Allocation_Submit_Click()
Dim sSQL As String
Dim k As Integer


'check for all values entered/selected
If Len(Nz(Me.cboMonDate, "")) = 0 Then
    MsgBox "Missing Week. Please make a selection."
    Me.cboMonDate.SetFocus
    Exit Sub
End If

If Len(Nz(Me.cboResource, "")) = 0 Then
    MsgBox "Missing Resource. Please make a selection."
    Me.cboResource.SetFocus
    Exit Sub
End If

If Len(Nz(Me.cboProject, "")) = 0 Then
    MsgBox "Missing Project. Please make a selection."
    Me.cboProject.SetFocus
    Exit Sub
End If

If Len(Nz(Me.cboPosition, "")) = 0 Then
    MsgBox "Missing Position. Please make a selection."
    Me.cboPosition.SetFocus
    Exit Sub
End If

For k = 2 To 6
    If Len(Nz(Me("tbhour" & k), "")) = 0 Then
        MsgBox "Missing hours. Please enter hours for " & WeekdayName(k) & "."
        Me("tbhour" & k).SetFocus
        Exit Sub
    End If
Next

'build insert SQL string
For k = 2 To 6
    sSQL = "INSERT INTO Allocations (TheDate, Resource_ID, Project_ID, Position_ID, Hours)"
    sSQL = sSQL & " VALUES (#" & Me.cboMonDate + k - 2 & "#, " & Me.cboResource & ", " & Me.cboProject & ", "
    sSQL = sSQL & Me.cboPosition & ", " & Me("tbHour" & k) & ");"
    '        Debug.Print sSQL
    CurrentDb.Execute sSQL, dbFailOnError
Next

Me.Requery

MsgBox "Done"

End Sub

请添加您的用户界面图片,因为我不理解。这对你的问题重要吗?另外,既然你已经知道该做什么,你应该用伪代码写下你的算法。你的描述太难理解了。什么是“公式”?你说的是什么表格?用户界面只是顶部的4个列出的组合框,底部的5个文本框,每个星期一个,下面有一个提交按钮。表中的字段为:日期、资源、项目、职位和小时。我不熟悉伪代码,但我会尝试在我的原始帖子中编辑对它的描述,以使其更易于理解。仅从阅读这段代码来看,它似乎完成了我想要的几乎所有事情,但它是否会根据一周中的每一天调整日期?在我看来,所有5个条目的日期都是相同的。