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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2017, 23:00   #11
Ethex
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 86
По умолчанию

Вот таблица. Инфа о том, что должно произойти в первом посте

Цитата:
в котором вы что-то пытаетесь преобразовать
Не совсем понял. Нужны фрагменты кода?

В начале посредством одного из двух рекордсетов осуществляется выборка данных всей таблицы
Код:
Set rst = CurrentDb.OpenRecordset("SELECT * FROM таблица")
Далее, внутри цикла Do While прописывается условие для работы с данными, содержащими спецсимвол.
Код:
If InStr(1, rst.Fields("stolb").Value, "Chr(247)") > 0 Then
Проблема 1: Процедура проходила полностью, однако изменений внутри таблицы не происходило. Предполагаю, что по каким-то причинам процедура не может обнаружить данные с этим символом.
Я заменил спецсимвол на символ латыницы в этой строке. Соответственно, в таблице заменил спецсимвол на аналогичный у одного из значений. Процедура не прошла.
После условия идёт присвоение значений переменным.
Код:
 repCount = Right(stolb, 3)
Выше описано, какую часть данных со спецсимволом она обязана содержать и что задействована будет далее в цикле For. При запуске процедуры сообщается об ошибке type mismatch.
Проблема 2: Предположительно, по непонятной причине значение переменной не распознаётся как числовое. Хоть изначально объявлялась с типом Integer и я пробовал задействовать функцию CInt.

Если это на что-то может влиять - тип файла поля текстовый
Что важного если забыл указать - пишите
Вложения
Тип файла: zip Просмотр.zip (16.8 Кб, 9 просмотров)

Последний раз редактировалось Ethex; 02.05.2017 в 23:50.
Ethex вне форума Ответить с цитированием
Старый 03.05.2017, 00:12   #12
Ethex
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 86
По умолчанию

Засунул переменную в Watches
Тип указал как Variant/Boolean
Ethex вне форума Ответить с цитированием
Старый 03.05.2017, 17:28   #13
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

1. в базе нет таблицы с именем "таблица";
2. в таблице нет поля с именем stolb;
3. в базе нет ни строки кода.

Вариант решения через доптаблицу
Код:
Sub a()
    Dim rs As Recordset
    Dim counter As Integer
    Dim i As Integer
    Dim sSQL As String
    Set rs = CurrentDb.OpenRecordset("Select * from ПРосмотр")
    rs.MoveLast
    rs.MoveFirst
    DoCmd.SetWarnings False
    sSQL = "select [dannie],[znachenie],[znachenie2] into tblResult from [Просмотр]"
    DoCmd.RunSQL sSQL
    sSQL = "delete * from tblResult"
    DoCmd.RunSQL sSQL
    
    Do While rs.EOF <> True
        sSQL = "INSERT INTO [tblResult] " & _
                " (dannie, znachenie,znachenie2) values " & _
                " (""" & rs.Fields(0) & """,""" & rs.Fields(1) & """,""" & rs.Fields(2) & """)"
        Debug.Print sSQL
        DoCmd.RunSQL sSQL
        If InStr(rs.Fields(0), ChrW(247)) > 0 Then
            counter = CInt(Right(rs.Fields(0), 3))
            For i = 1 To counter
                sSQL = "INSERT INTO [tblResult] " & _
                " (dannie) values " & _
                " (""" & _
                Left(rs.Fields(0), Len(rs.Fields(0)) - 4) & _
                Left(Right(rs.Fields(0), 4), 1) & _
                Format(i, "000") & _
                """)"
                DoCmd.RunSQL sSQL
            Next i
        End If
        rs.MoveNext
    Loop
    DoCmd.SetWarnings True
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 04.05.2017, 23:03   #14
Ethex
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 86
По умолчанию

Цитата:
1. в базе нет таблицы с именем "таблица";
2. в таблице нет поля с именем stolb;
Ошибочно посчитал возможным писать код выше схематически, не ориентируя под таблицу
Цитата:
3. в базе нет ни строки кода
Благодарю за помощь и проявленное терпение.
Также приношу извинения перед пользователями форума за неудобства в оказании мне помощи (как-то: некорректная формулировка задачи; косяки в этике общения; следование указаниям не должным образом).

Между тем, проблема решилась.
Проблема с типом крылась в наличии пробелов справа.
А с символом помогло удаление ковычек в условии поиска.
Ethex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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