以编程方式获取Access DB表中的最后一个条目?

时间:2019-04-24 11:31:26

标签: c# ms-access

我正在创建客户记录,并希望使用基于年份和Access DB表中最后一个数据行的编号+1的自定义ID。

示例ID为将写入新数据的年份和下一个空行行号(如果是新的数据库表则为2019-0001)

我已经找到了如何从日期中提取年份的方法,但是我找不到任何信息来获取Access DB表中的记录数,因此任何在其中查找信息/代码的指针都会有所帮助。

我已经使用普通的CRUD方法输入数据,但是我希望客户ID可以按年份(前4位)进行过滤,因此可以用来创建忠诚度奖励类型的奖励系统。

3 个答案:

答案 0 :(得分:0)

我刚刚在组织的一个数据库中实现了类似的ID。关键是要维护两列,一列用于年份,一列用于ID。您也可以使用这两列作为主键来维护完整性,尽管我发现使用单独的自动编号列作为主键更容易。

您可以使用与以下类似的查询来依次添加每年的记录。它使用Nz函数检查空值(即新年),并将ID默认设置为0,然后加1。

INSERT INTO YOUR_TABLE (Year, Id)
SELECT New_Year, New_Id 
FROM (SELECT 2019 as New_Year, Nz(Max(Id),0)+1 as New_Id FROM YOUR_TABLE WHERE Year = 2019);

您将需要在SELECT查询和表单/报表中使用Format函数,以####-####格式显示它,因为前导零将不会被存储,并且不需要原始数据。

下面是一个显示复合ID的SELECT查询示例

SELECT Format([Year],"0000") & "-" & Format([Id],"0000") AS Composite_Id
FROM YOUR_TABLE;

答案 1 :(得分:0)

在Access中,很好的组合ID有点让人头疼...多年来,我一直使用的解决方案是将我的ID作为自动编号/主键并创建一个仅用于显示目的的组合键。 一种解决方案是创建一个表,其中包含所有年份以及最后一个条目
2017 1232
2018 2122
2019 2001
因此,每次您想要添加一个新条目时,您都会读取当年的年份...如果匹配则读取上一个值...您将其添加到复合键字段(如2019002001)中,并将上一个条目的值增加1 < br /> 2019 2002

答案 2 :(得分:0)

感谢所有花时间回答我的问题的人。

我要寻找的是简单的C#代码行,以找到Access数据库表中的最后一个条目。 SQL查询不是问题,也不是我一直在寻找的答案。 (如果不需要,为什么要在C#程序中使用存储过程?)

我决定在数据集中执行此操作,而不仅仅是在Access DB表中查询最后一个条目,这是我想避免的事情。