2012-02-02 50 views
1

在数字填补我有以下查询得到的记录:算法串联

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

该记录将因此下令号码列表,如。 [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 

注:我知道这是我相似的前面一个问题,但我现在要求当数字包含在记录如何做到这一点。另外请注意,我不想使用将记录集转换为数组的函数,因为我使用的是DAO,显然GetRows有问题。

回答

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 
+0

您是否正确理解问题?结果会是这样的:00000000000000001000000000000000000000000010000000000000000000000001等 – CJ7 2012-02-02 11:14:01

+0

对于'3,4,5,8,10'的rs,上面的输出将是字符串'“0011100101”'isnt你以后的什么? – 2012-02-02 11:20:07

+0

不试图迂腐,但为什么有If语句 - 你是不是依靠被排序? – CJ7 2012-02-02 11:32:00