【问题标题】:Algorithm for filling in numbers in series序列填充数字的算法
【发布时间】:2012-02-25 00:37:58
【问题描述】:

我有一个通过以下查询获得的记录集:

SELECT DISTINCT [Number] FROM NUMBERS WHERE CODE = 7 ORDER BY [Number]

因此,Recordset 将是一个有序数字的列表,例如。 [6,14,37,59,81,145]

我想生成一长串仅由 0 和 1 组成的数字,其中除记录集中数字指定的位置外全为 0:例如。 6、14、37、59等

因此,结果将类似于:

000000000000000000100000000000000000000001000000000000000000001000000 etc

假设rs 是记录集,到目前为止我有以下代码。这行得通吗?

intLower = 1
While Not (rs.BOF Or rs.EOF)
    intUpper = rs!Number
    For intSlot = intLower To intUpper
        strOutput = strOutput & IIf(rs!Number = intSlot, 1, 0)
    Next intSlot
    rs.moveNext
    intLower = intUpper + 1
Wend

注意:我意识到这与我之前的问题相似,但我现在想问的是,当数字包含在 Recordset 中时如何执行此操作。另请注意,我不想使用将记录集转换为数组的函数,因为我使用的是 DAO,显然 GetRows 有问题。

【问题讨论】:

    标签: algorithm vb6 dao


    【解决方案1】:

    怎么样;

    dim value as long
    dim result as String
    
    do while not rs.EOF
        value = rs!Number
        If (value > Len(result)) then result = result & String$(value - Len(result), "0")
        Mid$(result, value, 1) = "1"
        rs.moveNext
    loop
    msgbox result
    

    按排序进行编辑;

    dim result as String
    
    do while not rs.EOF
      result = result & String$(rs!Number - Len(result) - 1, "0") & "1"
      rs.moveNext
    loop
    msgbox result
    

    【讨论】:

    • 您是否正确理解了问题?结果将类似于:00000000000000001000000000000000000000000010000000000000000000000001 等。
    • 对于 3, 4, 5, 8, 10 的 rs,上面的输出将是字符串 "0011100101" 不是你想要的吗?
    • 不想学究气,但为什么有 If 语句 - 你不依赖 rs 被排序?
    • 我没有注册他们被订购的事实
    • 好的,输入rs.MoveNext,我会奖励答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2023-03-08
    • 2011-02-24
    • 1970-01-01
    • 2021-06-23
    • 2019-11-18
    • 1970-01-01
    相关资源
    最近更新 更多