串行填数的算法

时间:2012-02-02 10:44:08

标签: algorithm vb6 dao

我有一个通过以下查询获得的Recordset:

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是Recordset,到目前为止我有以下代码。这会有用吗?

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存在问题。

1 个答案:

答案 0 :(得分:0)

怎么样;

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