2012-02-02 34 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