【发布时间】:2016-02-03 08:13:52
【问题描述】:
正如标题所说,我正在尝试执行 SELECT 语句,其中我选择了 1 条特定记录(该人搜索的记录),但我也想获得 5 条记录(特定记录之前和之后的 5 条记录) ) 在特定搜索记录的右侧和左侧,同时将当前/焦点记录保留在搜索记录上。
记录 ID(他们在哪里搜索)由与数字结合的过期值组成。例如,在本月,第一个创建的记录看起来像 1602030001<-- Year(16), month (02), day (03) and first record (0001)。所以他们本月创建的第二个将是1602030002,以此类推。
因此,如果他们搜索记录 16020050(2 月的第 50 条记录),我想显示记录 16020044 到 16020055。
我已经做过这样的事情,但它有一个缺点: 获取搜索到的记录 (16020050) 并在 VBA 中设置一个最大和最小变量 (int) 以对搜索到的记录号执行 -5 和 + 5。然后使用这些变量来执行 SELECT,例如:
SELECT * FROM SearchRecord WHERE ID > MinVariable (16020044) AND ID < MaxVariable (16020055)
但是,这样做的缺点是,例如,当 2 月份只有 500 条记录时,例如 16020500,然后行军开始 (16030001),并且该人正在搜索 2 月份的第 500 条记录,它还会搜索不存在的记录t 存在(最多 505 个,而这 5 个已经在 3 月 --> 16030005)。
我不知道一种更有效/更智能的方法可以将这 5 条额外记录分配到每一方,并且还保持逻辑,如果您搜索特定月份中的最后一条记录,则右侧的 5 条记录将从下个月。
我希望这是有道理的;)
【问题讨论】: