Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2017, 21:04   #1
Ethex
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 86
По умолчанию VBA, Access, Размножение данных

Здравствуйте
Имеется таблица в Access. В одном из столбцов данные представлены примерно вот в таком виде:
00-00-001 - по большей части
Однако, есть и следующие:
00-00-001[юникодовский символ]010
Требуется, чтобы при запуске процедуры под строками, где есть данные второго вида создались новые строки и заполнились следующим образом:
00-00-001[символ]010
00-00-002
00-00-003
00-00-004
...
00-00-010

Т.е., строки создаются и заполняются пока значение трёхзначного числа перед символом не станет равно числу после символа. А данные из соседних ячеек строки с символом дублируются в соответствующие ячейки столбцов.

Нужна помощь. Из предположений:
Мне ведь потребуется обрезать значение ячейки для объявления переменных. Находил на англоязычном ресурсе такой пример

Код:
Dim s As String
s = "Emily has wild flowers. They are red and blue."

Dim indexOfThey As Integer

indexOfThey = InStr(1, s, "They")

Dim finalString As String          
finalString = Right(s, Len(s) - indexOfThey + 1)
Корректно ли будет в моём случае?
Код:
Dim s As String
s = Cell (i, 1).Value
Dim index As Integer 
index = InStr (1, s, ChrW(247))
Dim r As String
Dim l As String
r = Right(s, Len(s) - ind+1) '010
l = Left(s, Len(s) - ind-1) '00-00-001
Если корректно, как объявить вот эту часть: 00-00-001 ?
Потребуется ли мне использовать Recordset для создания и/или заполнения строк?
Уместны ли будут SQL запросы в коде для создания и/или заполнения?
Предполагаю, что потребуется использовать цикл Do While и менять тип переменных со строкового на числовой.

На этом мои соображения заканчиваются
Ethex вне форума Ответить с цитированием
Старый 30.04.2017, 21:08   #2
Ethex
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 86
По умолчанию

Если требуется что-то сообщить для уточнения задачи, скажите
Ethex вне форума Ответить с цитированием
Старый 01.05.2017, 13:36   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
intR = int(r)
for step = 1 to intR do
 debug.print '00-00-' & format('000',intR)
next step
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 02.05.2017, 05:17   #4
Ethex
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 86
По умолчанию

Код:
intR = int(r)
Перевод типа в числовой? А разве не CInt?
Код:
debug.print
А зачем тут оператор вывода в окно редактора?
Ethex вне форума Ответить с цитированием
Старый 02.05.2017, 10:34   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

CInt,
чтобы убедиться таким должен быть ответ или нет
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 02.05.2017, 12:12   #6
Ethex
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 86
По умолчанию

Проблема теперь следующая
В коде есть строка
Код:
If InStr(1, query.Fields("ob").Value, "a") > 0 Then  ' условие на наличие символа'
Как я писал выше, требовалось оперировать с данными, имеющими юникодовский символ. Я пришёл к выводу, что программа не может его прочесть и для проверки заменил в строке его на "a" и вставил a водно из значений, вместо нужного символа.
После запуска кода выдало type mismatch и подчеркнуло строку
Код:
 repCount = CInt(Right(ob, 3))
repCount - переменная, обозначающая три цифры после символа. Изначально была объявлена как Integer (CInt попробовал прописать от безысходности). Далее, переменная буде задействована в цикле For.
Не могу понять, что не так с её типом?
Ethex вне форума Ответить с цитированием
Старый 02.05.2017, 14:05   #7
Ethex
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 86
По умолчанию

Да, и попутно
Нужный символ - 247 по юникоду. Chr(247) и ChrW(247) прописывал - данные с символом не находились
Из-за чего?
Ethex вне форума Ответить с цитированием
Старый 02.05.2017, 19:41   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Ethex Посмотреть сообщение
После запуска кода выдало type mismatch и подчеркнуло строку
Код:
 repCount = CInt(Right(ob, 3))
repCount - переменная, обозначающая три цифры после символа.
Не могу понять, что не так с её типом?
Код:
Right(ob, 3)
что возвращает? Проблема в том, что этих 3 символа не представляется возможным перевести в Integer
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 02.05.2017, 20:11   #9
Ethex
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 86
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Код:
Right(ob, 3)
что возвращает?
Последние три символа значения ячейки
00-00-001[символ]010
Цитата:
Проблема в том, что этих 3 символа не представляется возможным перевести в Integer
Почему?
Ethex вне форума Ответить с цитированием
Старый 02.05.2017, 20:55   #10
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

Цитата:
Сообщение от Ethex Посмотреть сообщение
Почему?
выложите базу --иначе это не разбор ошибки, а угадайка
по крайней мере таблицу с двумя записями
--без доп символа и количества
--с символом и количеством

и конечно запрос, в котором вы что-то пытаетесь преобразовать
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание

Последний раз редактировалось shanemac51; 02.05.2017 в 20:57.
shanemac51 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA, Access, Импорт данных Ethex Помощь студентам 5 05.05.2017 22:43
Создание запроса Access VBA - MS Access nikolaynn2008 Microsoft Office Access 2 06.08.2016 01:13
Ошибка 1004 при обновлении данных из Access (VBA EXCEL) Kycaka Microsoft Office Excel 7 07.12.2012 10:30
Приложение на VBA работающее с базой данных Access Nidl Помощь студентам 0 30.05.2011 12:51
Приложение на VBA работающее с базой данных Access Nidl Помощь студентам 0 30.05.2011 12:45