Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разделение значений поля
 
 автор: Серега   (11.11.2009 в 11:54)   личное сообщение
 
 

Есть в таблице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.

  Ответить  
 
 автор: ДрЮня   (11.11.2009 в 11:57)   личное сообщение
 
 

Если цифири всегда меньше 9, то самое простое использовать функцию Mid()

Function Mid(String, Start As Long, [Length])
    Member of VBA.Strings
    Returns specified number of characters from a string

  Ответить  
 
 автор: Серега   (11.11.2009 в 13:07)   личное сообщение
 
 

Нет, цифры могут быть совершенно разные между точками, вплоть до трехзначных и даже четырехзначных. Т.е. могут быть и такие 10000.1.1.

  Ответить  
 
 автор: Серега   (11.11.2009 в 13:09)   личное сообщение
 
 

В Икселе есть функция "разбить по столбцам". Указываешь разделитель ТОЧКА и все отлично разбивается. Вот нечто подобное нужно в аксесе.

  Ответить  
 
 автор: ДрЮня   (11.11.2009 в 13:18)   личное сообщение
 
 

тогда split() или instr()
только придется делать это в цикле и в запрос вроде как не запихнешь :(

  Ответить  
 
 автор: kot_k_k   (11.11.2009 в 13:26)   личное сообщение
 
 

вопрос - для чего это в дальнейшем нужно?? т.к. реализация от этого завист сильно.

первое что пришло - создаем таблу временную с кол-вом полей = 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"

  Ответить  
 
 автор: Серега   (11.11.2009 в 13:34)   личное сообщение
 
 

Нужно это для того, чтобы создать бесконечное дерево. То есть чтобы дерево имело столько уровней, сколько в таблице. А каждый уровень - это число после точки. Соответственно 1.1.1 - это три уровня. А их может быть сколько угодно в любой момент. То есть нужно исходя из подобного поля Код создать дерево, которое в любой момент будет менять количество уровней.
Я пока что умею создавать дерево с конкретным количеством уровней. И для этого я и хочу создать подобный запрос. Тогда у меня все получится.

  Ответить  
 
 автор: Серега   (11.11.2009 в 13:53)   личное сообщение
 
 

Хотя не получится.
Блин, тогда я не знаю.

Задача следующая. Есть таблица с полем "код". Поле "Код" содержит значения:
1
1.1
1.1.1
2
И т.д. Между точками может быть любое натуральное число, хоть четырехзначное.
При этом уровней может быть сколько угодно. И как Вы понимаете, все уровни содержатся в одном поле "код". То есть сколько чисел между точками, столько и уровней. При этом количество уровней может как уменьшаться, так и увеличиваться (при добавлении/удалении полей).
Вопрос: как сделать дерево, в котором будут учтены все уровни, КОЛИЧЕСТВО КОТОРЫХ меняется и неизвестно заранее.

  Ответить  
 
 автор: shaucha   (16.11.2009 в 12:30)   личное сообщение
 
 

Я занимаюсь матричными кодами уже давно.
не совсем понял про бесконечное дерево.
Я не верю, что код настолько непредсказуем, что нельзя выделить минимально допустимое количнество уровней и максимально допустимое количество уровней. Если это не так, то это не код, а что-то невероятно неудобное.
Если же эти параметры мложно определить, то и расшифровку кода можно сделать легко.
Идем по коду, ищем первый разделитель, считаем количество симфолов ло него, берем эти символы и ставляем в соответствующее поле теблицы с расшифровкой (например код01) и так далее.

  Ответить  
 
 автор: Explorer   (16.11.2009 в 12:39)   личное сообщение
 
 


любое натуральное число, хоть четырехзначное



улыбнуло :)

  Ответить  
 
 автор: Серега   (16.11.2009 в 15:12)   личное сообщение
 
 

Что конкретно Вас здесь улыбнуло?

  Ответить  
 
 автор: Explorer   (16.11.2009 в 18:54)   личное сообщение
 
 

"четырехзначное" это уже не "любое".

если вы готовы на одно ограничение - что вас заставляет требовать чтобы ограничений вообще небыло?

в действительности сложные иерархические структуры, графы большой глубины принесут вам еще много сюрпризов :))) удачи в поиске эмпирических формул универсального.

многие через это проходили

http://rain.ifmo.ru/cat/view.php/vis/graph-general

  Ответить  
 
 автор: Серега   (21.11.2009 в 20:03)   личное сообщение
 
 


"четырехзначное" это уже не "любое".


Подождите. Как это четырехзначное - это уже не любое? Я же говорю о натуральных числах. Они могут быть хоть двадцатизначными и более. ЛЮБОЕ натуральное число имеет другое натуральное число, больше его.
Их число бесконечно. О чем я и хотел сказать. То есть я говорил о том, что между точками стоят НЕДРОБНЫЕ (ЦЕЛЫЕ), ПОЛОЖИТЕЛЬНЫЕ ЧИСЛА, то бишь натуральные. От 1 до бесконечности.

  Ответить  
 
 автор: osmor   (16.11.2009 в 12:47)   личное сообщение
 
 

для начала нужно получить таблицу /запрос следующего вида
idузла - уникальный ключ
Имя - текст в дереве
idРодителя - уникальный код родителя этого узла
После этого рекурсией легко строится дерево любой вложенности

  Ответить  
 
 автор: Серега   (16.11.2009 в 15:13)   личное сообщение
 
 

Вообще я уже разобрался со всем. Спасибо всем, кто пытался помочь.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList