Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Sql 优先事项表?_Sql_Ms Access_Vba - Fatal编程技术网

Sql 优先事项表?

Sql 优先事项表?,sql,ms-access,vba,Sql,Ms Access,Vba,我很想知道是否有一种方法可以根据优先级来制作表格 与中一样,您有一个表单、子表单(数据表)和两个按钮 子窗体从查询中获取数据,该查询从表中获取数据 从这里,查询显示项目。您可以选择子窗体上的项目,然后单击一个按钮来降低优先级,这会将其在列表中向下移动1个项目。如果单击inc按钮,它会将其向上移动。如果它在最底部,你点击减少按钮,它会弹出“这个项目已经是最低优先级了!”和增加的项目一样,但它会说它已经是最高优先级了 这可能吗?我真的不知道有什么VBA可以访问子窗体的数据表并对其进行修改,我想学习一

我很想知道是否有一种方法可以根据优先级来制作表格

与中一样,您有一个表单、子表单(数据表)和两个按钮

子窗体从查询中获取数据,该查询从表中获取数据

从这里,查询显示项目。您可以选择子窗体上的项目,然后单击一个按钮来降低优先级,这会将其在列表中向下移动1个项目。如果单击inc按钮,它会将其向上移动。如果它在最底部,你点击减少按钮,它会弹出“这个项目已经是最低优先级了!”和增加的项目一样,但它会说它已经是最高优先级了

这可能吗?我真的不知道有什么VBA可以访问子窗体的数据表并对其进行修改,我想学习一下

更新: 我有一个表,有5个优先级类型和一个键。 表名为ProjectsT,键名为ProjectID,5个优先级为: 切割优先级、项目优先级、工程师优先级、切割计划优先级、硬件优先级。每个优先级都以数字数据类型列出

这是迄今为止我从以下答案中获得的按钮代码集: 向上按钮:

Dim strSQL As String
Dim intSavePos As Integer
Dim intSavePosMin As Integer
Dim intSavePosMax As Integer

'Save start and end value (It's assumed you start with 1 ! The value 0 (zero) is used for swapping value's)
intSavePosMin = DMin("CuttingPriority", "ProjectsT")
intSavePosMax = DMax("CuttingPriority", "ProjectsT")
'When the subform is linked to a keyfield use that field for a WHERE like:
'intSavePosMin = DMin("sequence", "tblTableNico5038", "Function='" & Me.sfrmFunctionTables.Form.Function & "'")
'intSavePosMax = DMax("sequence", "tblTableNico5038", "Function='" & Me.sfrmFunctionTables.Form.Function & "'")

intSavePos = Me.txtCuttingPriority
'is it the first ? ==> no action
If intSavePos = intSavePosMin Then Exit Sub
'switch positions
DoCmd.SetWarnings False
strSQL = "UPDATE ProjectsT SET ProjectsT.CuttingPriority = 0 WHERE CuttingPriority=" & intSavePos & ";"
'When the subform is linked to a keyfield use that field for a WHERE like:
'strSQL = "UPDATE tblTableNico5038 SET tblTableNico5038.Sequence = 0 WHERE Function='" & Me.sfrmTableNico5038.Form.Function & "' AND sequence=" & intSavePos & ";"
DoCmd.RunSQL strSQL
strSQL = "UPDATE ProjectsT SET ProjectsT.CuttingPriority = " & intSavePos & " WHERE CuttingPriority=" & intSavePos - 1 & ";"
'When the subform is linked to a keyfield use that field for a WHERE like:
'strSQL = "UPDATE tblTableNico5038 SET tblTableNico5038.Sequence = " & intSavePos & " WHERE Function='" & Me.sfrmTableNico5038.Form.Function & "' AND sequence=" & intSavePos - 1 & ";"
DoCmd.RunSQL strSQL
strSQL = "UPDATE ProjectsT SET ProjectsT.CuttingPriority = " & intSavePos - 1 & " WHERE CuttingPriority=0;"
'When the subform is linked to a keyfield use that field for a WHERE like:
'strSQL = "UPDATE tblTableNico5038 SET tblTableNico5038.Sequence = " & intSavePos - 1 & " WHERE Function='" & Me.sfrmTableNico5038.Form.Function & "' AND sequence=0;"
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True

Me.Refresh
Me.ProjectsTCuttingSubF.SetFocus
SendKeys ("{up}")
向下按钮:

Dim strSQL As String
Dim intSavePos As Integer
Dim intSavePosMin As Integer
Dim intSavePosMax As Integer

intSavePosMin = DMin("CuttingPriority", "ProjectsT")
intSavePosMax = DMax("CuttingPriority", "ProjectsT")

intSavePos = Me.txtCuttingPriority
'is it the last ? ==> no action
If intSavePos = intSavePosMax Then Exit Sub
'switch positions
DoCmd.SetWarnings False
strSQL = "UPDATE ProjectsT SET ProjectsT.CuttingPriority = 0 WHERE CuttingPriority=" & intSavePos & ";"
DoCmd.RunSQL strSQL
strSQL = "UPDATE ProjectsT SET ProjectsT.CuttingPriority = " & intSavePos & " WHERE CuttingPriority=" & intSavePos + 1 & ";"
DoCmd.RunSQL strSQL
strSQL = "UPDATE ProjectsT SET ProjectsT.CuttingPriority = " & intSavePos + 1 & " WHERE CuttingPriority=0;"
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True

Me.Refresh
Me.ProjectsTCuttingSubF.SetFocus
SendKeys ("{down}")

--

我的工作场所有一个工作票系统,为了创建优先级,我创建了两个表:
工作票
工作票标准
。标准表列出了低、中、低等标准。。。然后,
工作票
中的一个字段从第二个表中提取。然后按日期排序

它不会像您所寻找的那样给单个记录单一个数字优先级,因为要做到这一点,我相信您必须创建一个单独的字段,然后在每次更新后修改每个记录的数字字段。将1与2切换,或者将新记录设为1,然后将1添加到每个记录的优先级字段中,以将其向下移动到列表中

或者,如果你从一个像1000这样的数字开始,那么你可以以5、10或20的增量创建大于或小于100的记录,但最终你会用完数字

更新

如果您愿意使用我添加另一列的方法,那么我只需添加列并将字段命名为
Priority\u Numbers
或其他什么。然后,你可以将每个数字标记为1,但你可能需要进行检查,以确保你的数字不存在,方法是将其设置为键或进行检查

然后,每次您想要查看您的票证时,您都会使用以下内容:

Dim strSQL As String
Dim myR As Recordset

strSQL = "SELECT * FROM table_name WHERE criteria_here ORDER BY Priority_Numbers ASC"

Set myR = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
bam你有你的优先列表


现在要更改优先级,您需要选择该记录集,首先查找要替换值的记录,
循环中的每个优先级数字+1或-1,而不是EOF
循环,然后继续移动。我敢肯定,如果您的罚单太高,这将变得很乏味。

我的工作场所有一个工作罚单系统,为了创建优先级,我创建了两个表:
work\u tickets
work\u ticket\u Criteria
。标准表列出了低、中、低等标准。。。然后,
工作票
中的一个字段从第二个表中提取。然后按日期排序

它不会像您所寻找的那样给单个记录单一个数字优先级,因为要做到这一点,我相信您必须创建一个单独的字段,然后在每次更新后修改每个记录的数字字段。将1与2切换,或者将新记录设为1,然后将1添加到每个记录的优先级字段中,以将其向下移动到列表中

或者,如果你从一个像1000这样的数字开始,那么你可以以5、10或20的增量创建大于或小于100的记录,但最终你会用完数字

更新

如果您愿意使用我添加另一列的方法,那么我只需添加列并将字段命名为
Priority\u Numbers
或其他什么。然后,你可以将每个数字标记为1,但你可能需要进行检查,以确保你的数字不存在,方法是将其设置为键或进行检查

然后,每次您想要查看您的票证时,您都会使用以下内容:

Dim strSQL As String
Dim myR As Recordset

strSQL = "SELECT * FROM table_name WHERE criteria_here ORDER BY Priority_Numbers ASC"

Set myR = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
bam你有你的优先列表


现在要更改优先级,您需要选择该记录集,首先查找要替换值的记录,
循环中的每个优先级数字+1或-1,而不是EOF
循环,然后继续移动。我敢肯定,如果您的罚单太高,这将变得很乏味。

我的工作场所有一个工作罚单系统,为了创建优先级,我创建了两个表:
work\u tickets
work\u ticket\u Criteria
。标准表列出了低、中、低等标准。。。然后,
工作票
中的一个字段从第二个表中提取。然后按日期排序

它不会像您所寻找的那样给单个记录单一个数字优先级,因为要做到这一点,我相信您必须创建一个单独的字段,然后在每次更新后修改每个记录的数字字段。将1与2切换,或者将新记录设为1,然后将1添加到每个记录的优先级字段中,以将其向下移动到列表中

或者,如果你从一个像1000这样的数字开始,那么你可以以5、10或20的增量创建大于或小于100的记录,但最终你会用完数字

更新

如果您愿意使用我添加另一列的方法,那么我只需添加列并将字段命名为
Priority\u Numbers
或其他什么。然后,你可以将每个数字标记为1,但你可能需要进行检查,以确保你的数字不存在,方法是将其设置为键或进行检查

然后,每次您想要查看您的票证时,您都会使用以下内容:

Dim strSQL As String
Dim myR As Recordset

strSQL = "SELECT * FROM table_name WHERE criteria_here ORDER BY Priority_Numbers ASC"

Set myR = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
bam你有你的优先列表

现在要更改优先级,您需要选择该记录集,首先查找要替换值的记录,
循环中的每个优先级数字+1或-1,而不是EOF
循环,然后继续移动。