|
|
|
| Есть в таблице1 поле1 вида:
1.1
2.1
2.1.1
2.1.1.1
И так далее.
Нужно получить в запросе следующее:
Поле1__Поле2__Поле3__Поле4
1______1
2______1
2______1_______1
2______1_______1_______1
Соответственно, при появлении в поле1 таблицы1 номера:
2.1.1.1.1
в запросе появляется поле5, в котором будет стоять 1. | |
|
| |
|
|
|
| Если цифири всегда меньше 9, то самое простое использовать функцию Mid()
Function Mid(String, Start As Long, [Length])
Member of VBA.Strings
Returns specified number of characters from a string
|
| |
|
| |
|
|
|
| Нет, цифры могут быть совершенно разные между точками, вплоть до трехзначных и даже четырехзначных. Т.е. могут быть и такие 10000.1.1. | |
|
| |
|
|
|
| В Икселе есть функция "разбить по столбцам". Указываешь разделитель ТОЧКА и все отлично разбивается. Вот нечто подобное нужно в аксесе. | |
|
| |
|
|
|
| тогда split() или instr()
только придется делать это в цикле и в запрос вроде как не запихнешь :( | |
|
| |
|
|
|
| вопрос - для чего это в дальнейшем нужно?? т.к. реализация от этого завист сильно.
первое что пришло - создаем таблу временную с кол-вом полей = Max кол-во точек + 1 (из примера) туда вгоняем содержимое - используя Instr() и Mid().
отчет на основании таблы. типа Select * from Tabla.
после использования таблу удаляем.
или создаем запрос "select pole, " добавляя к нему строку типа "mid(pole,5,7) as Выражение_" & i
где 5 и 7 позиции соседних точек, i - шаг цыкла по обработке поля - Pole
//2.1.1.1.2 - i max=5
и в конце добавляем источник " from Tabla" | |
|
| |
|
|
|
| Нужно это для того, чтобы создать бесконечное дерево. То есть чтобы дерево имело столько уровней, сколько в таблице. А каждый уровень - это число после точки. Соответственно 1.1.1 - это три уровня. А их может быть сколько угодно в любой момент. То есть нужно исходя из подобного поля Код создать дерево, которое в любой момент будет менять количество уровней.
Я пока что умею создавать дерево с конкретным количеством уровней. И для этого я и хочу создать подобный запрос. Тогда у меня все получится. | |
|
| |
|
|
|
| Хотя не получится.
Блин, тогда я не знаю.
Задача следующая. Есть таблица с полем "код". Поле "Код" содержит значения:
1
1.1
1.1.1
2
И т.д. Между точками может быть любое натуральное число, хоть четырехзначное.
При этом уровней может быть сколько угодно. И как Вы понимаете, все уровни содержатся в одном поле "код". То есть сколько чисел между точками, столько и уровней. При этом количество уровней может как уменьшаться, так и увеличиваться (при добавлении/удалении полей).
Вопрос: как сделать дерево, в котором будут учтены все уровни, КОЛИЧЕСТВО КОТОРЫХ меняется и неизвестно заранее. | |
|
| |
|
|
|
| Я занимаюсь матричными кодами уже давно.
не совсем понял про бесконечное дерево.
Я не верю, что код настолько непредсказуем, что нельзя выделить минимально допустимое количнество уровней и максимально допустимое количество уровней. Если это не так, то это не код, а что-то невероятно неудобное.
Если же эти параметры мложно определить, то и расшифровку кода можно сделать легко.
Идем по коду, ищем первый разделитель, считаем количество симфолов ло него, берем эти символы и ставляем в соответствующее поле теблицы с расшифровкой (например код01) и так далее. | |
|
| |
|
|
|
|
любое натуральное число, хоть четырехзначное
|
улыбнуло :) | |
|
| |
|
|
|
| Что конкретно Вас здесь улыбнуло? | |
|
| |
|
|
|
| "четырехзначное" это уже не "любое".
если вы готовы на одно ограничение - что вас заставляет требовать чтобы ограничений вообще небыло?
в действительности сложные иерархические структуры, графы большой глубины принесут вам еще много сюрпризов :))) удачи в поиске эмпирических формул универсального.
многие через это проходили
http://rain.ifmo.ru/cat/view.php/vis/graph-general | |
|
| |
|
|
|
|
"четырехзначное" это уже не "любое".
|
Подождите. Как это четырехзначное - это уже не любое? Я же говорю о натуральных числах. Они могут быть хоть двадцатизначными и более. ЛЮБОЕ натуральное число имеет другое натуральное число, больше его.
Их число бесконечно. О чем я и хотел сказать. То есть я говорил о том, что между точками стоят НЕДРОБНЫЕ (ЦЕЛЫЕ), ПОЛОЖИТЕЛЬНЫЕ ЧИСЛА, то бишь натуральные. От 1 до бесконечности. | |
|
| |
|
|
|
| для начала нужно получить таблицу /запрос следующего вида
idузла - уникальный ключ
Имя - текст в дереве
idРодителя - уникальный код родителя этого узла
После этого рекурсией легко строится дерево любой вложенности | |
|
| |
|
|
|
| Вообще я уже разобрался со всем. Спасибо всем, кто пытался помочь. | |
|
| |