希望有人能在这里帮忙,我对SQL还不熟悉,但我是办公室里最有经验的人,所以这份工作落在了我身上。
我正在尝试构建一个将客户订单插入到生产计划中的表单。该表单允许用户从机器列表中选择一台机器,然而,在此之后,我需要它做的是找到该特定机器的最后一个作业编号,并在文本框中显示下一个序列号;这就是我遇到的问题。目标是当生产用户向数据库添加订单时,通过选择他们的机器,自动填充下一个可用的作业编号。输入的信息将保存到主计划表中。
我构建了一个查询来获取整个机器和作业组合列表,因为我的目标是构建一个可以从该列表中进行搜索的宏,但到目前为止,我还没有获得任何支持。如有任何帮助/建议,我们将不胜感激!
欢迎使用SO。
我的建议是创建一个表来保存序列号。出于本例的目的,我们将其命名为ProdSeq,意思是生产序列。作为该表定义的一部分,我将使用数据宏(Access 2010及更高版本)来分配添加记录时的序列。我将使用唯一索引以确保不会创建重复项。
表:PROSEQ(字段定义)
MachineID
(数字长)-引用计算机表中的计算机ID
ProdSeq
(长数字)-为每台计算机递增
OrderID
(数字长)-引用订单表中的订单ID
指数
在设计ProdSeq
表时,在设计功能区选项卡下,单击索引按钮。
UniqueKey
,字段名=MachineID
第2行:索引名=留空,字段名=ProdSequence
单击第1行第1列,然后设置以下索引属性:
Primary = Yes
Unique = Yes
Ignore Nulls = No
数据宏
在设计ProdSeq
表时,在设计功能区选项卡下,单击创建数据宏按钮,然后单击更改前按钮。输入以下数据宏:(Pastebin link)
创建更改前数据宏,并按如下方式设置:
If [IsInsert] Then
SetLocalVar
Name LatestProdSequence
Expression = 0
Look Up A Record In ProdSeq
Where Condition =[ProdSeqLookup].[MachineID]=[ProdSeq].[MachineID] And
[ProdSeqLookup].[LatestSeq] = True
Alias ProdSeqLookup
SetLocalVar
Name LatestProdSequence
Expression =[ProdSeqLookup].[ProdSequence]
SetField
Name ProdSeq.ProdSequence
Value = [LatestProdSequence]+1
SetField
Name ProdSeq.LatestSeq
Value = True
End If
请特别注意,LookUpRecord子句中只有一个SetLocalVar。使用LookUpRecord上的折叠/展开(-/+)按钮确保。
创建插入后数据宏,并按如下方式设置:(Pastebin Link)
For Each Record In ProdSeq
Where Condition = [ProdSeqFlagFix].[MachineID]=[ProdSeq].[MachineID] And
[ProdSeqFlagFix].[LatestSeq]=True And
[ProdSeqFlagFix].[ProdSequence]<>[ProdSeq].[ProdSequence]
EditRecord
SetField
Name ProdSeqFlagFix.LatestSeq
Value = False
End EditRecord
测试 您可以在空白数据库中创建它,以便查看我正在谈论的内容。您应该能够使其适应您的特定情况。
表单 在您的表单上,当用户选择一台机器和订单时,您可以使用VBA来检查是否有现有的记录,并获取该ID。如果不存在记录,则可以创建一条记录,然后将Food Seq ID返回到该表单。
注意:根据您的设计,您可能还需要在明细表上创建一个数据宏。假设某人创建了一个带有特定机器和订单的计划,并预留了一个生产时段。现在假设他们更改了订单ID。我们错误地预留了一个生产时段。因此,如果这种情况适用,您还需要在调度表上使用AfterUpdate数据宏来检查[old].OrderID<;>[Schedule].OrderID-如果它们确实不同,则从调度表和生产序列表中删除生产槽。上一篇:C#库乐高Mindstorm NXT库乐高、Mindstorm、NXT
下一篇:安装Hyperledger Fabric时,为什么会出现打开存档时出错:无法识别的存档格式错误错误、无法识别、格式、Hyperledger