编号记录的公式

时间:2011-12-05 04:11:43

标签: c# sql

我有一个允许用户为记录指定特定格式的客户端。不是id,而是和。一样好。

因此用户可以选择说

的格式
  • yyyy-1st 3 chrs of client name- next available file number

  • 文件管理器姓名首字母,下一个文件编号,yy

  • 下一个文件编号,yyyy,文件管理器缩写

他们还可以添加更多项目以便您获得

  • 下一个文件编号-yyyy-client姓名缩写 - 经理姓名缩写-yy

难以在此处可视化解决方案以及如何将格式存储在表格中,请将其拉​​出并生成所需的数字。

特别是假设客户可以

  • 随时更改格式
  • 下一个文件编号必须是下一个。

我想我在这里缺少的重要部分是生成一个查询,如果已有记录,则会给我“下一个文件编号”。

修改

不限于sql。我想不出一个解决方案,它允许我以自定义格式存储数字,然后根据该格式生成下一个数字。

2 个答案:

答案 0 :(得分:1)

我们要求用户做的是在更改格式时重新格式化现有记录。当格式改变时,我们知道旧格式和新格式,因此我们可以更新现有记录。

如果可视记录编号是您的操作的一部分并且需要保留,那么我会在记录中保留一个阴影副本,其中包含根据当前格式格式化的记录编号。当格式发生变化时,你可以在所有记录中更新它,找到下一个可用的数字现在是一个简单的选择语句。

答案 1 :(得分:1)

我不太明白你的意思,但这可能会启发你更多。

这就是我可能做的事情:


typedef struct tagRecord
{
Date (dd/mm/yyyy)
Initials_Client
Initials_FileManager
Next_File_Number
} Record;
...

Let: 
d = Date, ci = Initials_Client, fmi = Initials_FileManager, nfn = Next_File_Number SelectFormat(record[0], "dci"); // Display Date and Initials_Client Output:
12/4/2011 MH or SelectFormat(record[0], "cid"); // Initials_Client and Display Date Output:
MH 12/4/2011

如果您需要更多伪代码,请询问。