Алгоритм заполнения номеров в серии - PullRequest
1 голос
/ 02 февраля 2012

У меня есть набор записей, полученный по следующему запросу:

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 проблематичен.

1 Ответ

0 голосов
/ 02 февраля 2012

Как насчет;

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
...