Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 25.07.2015
Сообщений: 12

Как преобразовать таблицу, повторить строку с нарастающим счетчиком от 1 до указаного числа - MS Access

12.07.2018, 11:13. Показов 1290. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Есть табличка с адресами:

npuldomkol_kv
с. Семеновкаул. Центральная14
с. Семеновкаул. Заводская38

На выходе необходимо получить:

npuldomkv
с. Семеновкаул. Центральная11
с. Семеновкаул. Центральная12
с. Семеновкаул. Центральная13
с. Семеновкаул. Центральная14
с. Семеновкаул. Заводская31
с. Семеновкаул. Заводская32
с. Семеновкаул. Заводская33
с. Семеновкаул. Заводская34
с. Семеновкаул. Заводская35
с. Семеновкаул. Заводская36
с. Семеновкаул. Заводская37
с. Семеновкаул. Заводская38

Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2018, 11:13
Ответы с готовыми решениями:

Как записать строку с нарастающим числом?
Мне нужно что бы при нажатии на кнопку в первый раз в Memo записывалась 1строка "Dim" и 2строка с "InputBox1" При...

Как добавить строку в таблицу объекта DataSet и сохранить её в БД Access?
Помогите. Создал БД в Access. Считал необходимые таблицы. Заполнил ими DataSet. Теперь могу изменять значения полей в таблицах и сохранять...

Как строку преобразовать в числа java
String entry = src.nextLine //Считываем данные(); String entryParts = entry.split(" "); // получаем массив чисел разделенных...

10
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4159 / 2448 / 508
Регистрация: 13.12.2016
Сообщений: 8,322
Записей в блоге: 5
12.07.2018, 11:27
1. добавить поле kv
2. сделать подпрограмму с проходом по всем записям, которая добавляет записи от 1 до kol_kv в поле kv и выполнить ее только 1 раз
(добавить логику если kv имеет значение - запись не размножать)
3. удалить поле kol_kv
0
Мы один, давай на "ты"
3852 / 1395 / 346
Регистрация: 16.06.2016
Сообщений: 3,292
12.07.2018, 12:11
Лучший ответ Сообщение было отмечено boyanos как решение

Решение

boyanos, запрос Digits
Кликните здесь для просмотра всего текста
Visual Basic
1
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=535505&msg=5414410
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT TOP 1 0 AS digit FROM MSysObjects
UNION ALL
SELECT TOP 1 1 FROM MSysObjects
UNION ALL 
SELECT TOP 1 2 FROM MSysObjects
UNION ALL
SELECT TOP 1 3 FROM MSysObjects
UNION ALL
SELECT TOP 1 4 FROM MSysObjects
UNION ALL
SELECT TOP 1 5 FROM MSysObjects
UNION ALL
SELECT TOP 1 6 FROM MSysObjects
UNION ALL
SELECT TOP 1 7 FROM MSysObjects
UNION ALL
SELECT TOP 1 8 FROM MSysObjects
UNION ALL 
SELECT TOP 1 9 FROM MSysObjects

Или таблица. Лучше использовать специализированную таблицу с 10 строками (цифры 0-9).
SQL
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
    TABLE.np ,
    TABLE.ul ,
    TABLE.dom,
    CLng([D0].[Digit] & [D1].[Digit] & [D2].[Digit])+1 AS Kv
FROM
    Digits AS D0,
    Digits AS D1,
    Digits AS D2,
    [TABLE]
WHERE
    CLng([D0].[Digit] & [D1].[Digit] & [D2].[Digit])+1<=[TABLE].[kol_kv]
[Table] - твоя первая таблица
1
Эксперт MS Access
 Аватар для Eugene-LS
13176 / 5874 / 1505
Регистрация: 05.10.2016
Сообщений: 16,493
12.07.2018, 13:29
boyanos, кажется мне ... что не ладное вы затеяли с этим масштабным дублированием (и экторированием) информации ...
Всё будет правильнее если завести отдельную табличку "Таблица_Квартир"
Тогда:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Private Sub test01()
'Выполнять можно сколько угодно раз ... :)
'Расчитано на любое кол-во квартир
Dim rs As DAO.Recordset
Dim rsDST As DAO.Recordset
Dim lRecID As Long
Dim i As Integer, iQty As Integer
Dim strCriteria As String
 
'Адреса
    Set rs = CurrentDb.OpenRecordset("Таблица_Адресов", dbOpenSnapshot)
'Квартиры
    Set rsDST = CurrentDb.OpenRecordset("Таблица_Квартир", dbOpenDynaset)
    
'Перебор всех записей в наборе Адреса
    With rs
        Do Until .EOF = True 'Цикл до конца набора
            lRecID = !Adress_ID 'ID текущего Адреса
            iQty = !kol_kv 'кол-во квартир
            For i = 1 To iQty
                strCriteria = "Adress_SID=" & lRecID & " AND kvNo=" & i
                With rsDST
                    If .EOF = False And .BOF = False Then .MoveFirst
                    .FindFirst strCriteria
                    If .NoMatch Then 'Если искомое не найдено - добавляем!
                        .AddNew
                            !Adress_SID = lRecID
                            !kvNo = i
                        .Update
                    End If
                End With
            Next i
            .MoveNext
        Loop
    End With
 
On Error Resume Next
    rs.Close
    Set rs = Nothing
    rsDST.Close
    Set rsDST = Nothing
 
End Sub


А искомое можно получить запросом:
SQL
1
2
SELECT Таблица_Адресов.np, Таблица_Адресов.ul, Таблица_Адресов.dom, Таблица_Квартир.kvNo
FROM Таблица_Адресов INNER JOIN Таблица_Квартир ON Таблица_Адресов.Adress_ID = Таблица_Квартир.Adress_SID;
Миниатюры
Как преобразовать таблицу, повторить строку с нарастающим счетчиком от 1 до указаного числа - MS Access   Как преобразовать таблицу, повторить строку с нарастающим счетчиком от 1 до указаного числа - MS Access  
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
12.07.2018, 13:31
boyanos,

Если число квартир во всех домах не больше девяти, то можно и так (тоже с использованием Digits):
SQL
1
2
3
4
SELECT *
FROM Таблица, Digits
WHERE digit BETWEEN 1 AND kol_kv
ORDER BY ul, dom, digit
Упрощенный пример.
Просто для понимания.
0
Эксперт MS Access
 Аватар для Eugene-LS
13176 / 5874 / 1505
Регистрация: 05.10.2016
Сообщений: 16,493
12.07.2018, 13:42
boyanos, в моём варианте подправьте строчку пожалуйста, вместо:
If .EOF = False And .BOF = False Then .MoveFirst
Напишите:
If .BOF = False Then .MoveFirst
... ошибся малость, хотя... - и так работает.
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
12.07.2018, 13:53
Цитата Сообщение от Eugene-LS Посмотреть сообщение
с этим масштабным дублированием (и экторированием) информации
Что такое экторирование?
0
Эксперт MS Access
 Аватар для Eugene-LS
13176 / 5874 / 1505
Регистрация: 05.10.2016
Сообщений: 16,493
12.07.2018, 14:24
Цитата Сообщение от Capi Посмотреть сообщение
Что такое экторирование?
От: octo (Восемь) лат.
Слово придумалось на ходу
Хотя у нас встречаются бараки и по 12 квартир, еще сразу после ВОВ строили.
0
Эксперт MS Access
 Аватар для Eugene-LS
13176 / 5874 / 1505
Регистрация: 05.10.2016
Сообщений: 16,493
14.07.2018, 03:14
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Хотя у нас встречаются бараки и по 12 квартир
АХ! - Забыл подтвердить:
Бараки в Мурманске
Надеюсь цветность и разрешение фоток не оставит сомнений в их "современности" ....
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
16.07.2018, 03:42
Там 90% не бараки.

Добавлено через 24 минуты
У бараков один коридор и вдоль него по обе стороны идут однокомнатные клетушки, санузел общий, либо на улице. Чаще всего это одноэтажные здания, отопление печное, коммуникации, кроме электричества, отсутствуют.
0
Эксперт MS Access
 Аватар для Eugene-LS
13176 / 5874 / 1505
Регистрация: 05.10.2016
Сообщений: 16,493
17.07.2018, 15:08
Цитата Сообщение от alvk Посмотреть сообщение
санузел общий, либо на улице.
За частую на улице ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.07.2018, 15:08
Помогаю со студенческими работами здесь

Преобразовать строку, удалить каждый символ * и повторить каждый символ, отличный от *
помогите с задачей пожалуста: Дана строка. Преобразовать ее, удалить каждый символ * и повторить каждый символ, отличный от *.

Преобразовать строку, удалив каждый символ * и повторить каждый символ,отличный от *
дана строка.Преобразовать ее удалить каждый символ*и вовторить каждый символ,отличный от*

Преобразовать строку с разделителями в PL/SQL таблицу
Здравствуйте! Помогите с заданием. Буду очень благодарен если поможете сделать.! Напишите функцию, которая получает на вход строку чисел,...

Преобразовать строку из файла, содержащую запись десятичного числа, в строку с двоичным числом
Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа. И...

Из БД Access целое число преобразовать в строку
У меня в БД Access некоторые поля с целыми числами, пробую преобразовать IntToStr, ругается что типа Double нельзя так преобразовать. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru