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