Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
126 / 96 / 33
Регистрация: 28.02.2017
Сообщений: 478
1

Ошибка при импорте

24.04.2020, 23:28. Показов 3381. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер всем. Такая проблемка нарисовалась, при импорте из Excel доходит до пустой ячейки и затыкается, по всякому пробовал, помогает только вручную поставить ноль. Подскажите пожалуйста что не так в этом выражении или как заменить пустые ячейки на ноль при импорте.
Visual Basic
1
2
3
.....
rst!Колво = Nz(.Range("G" & lRowNo).Value, 0)
.....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2020, 23:28
Ответы с готовыми решениями:

Ошибка при импорте из Excel
Недавно начал изучать Access, но база нужна была "еще вчера", поэтому вопрос, может и смешной, но...

Досадная ошибка при импорте с файла DBF...
Как выйти с такого положения? Импортировал таблицы из файла DBF, поле лицевой счет "LICS"...

При импорте в Access из Excel Ошибка типа данных (#Число!)
Добрый день, есть запрос на добавление данных из файла excel, выгруженного из 1С, в базу данных MS...

Ошибка формата Дата/время при импорте данных из txt в Access
Здравствуйте! Срочно нужна Ваша помощь Делаю импорт из txt-файла в Access 2007. txt-файл имеет...

27
126 / 96 / 33
Регистрация: 28.02.2017
Сообщений: 478
23.07.2020, 12:41  [ТС] 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Напишите блок добавления так:
Спасибо, очередной раз выручили. Все работает.
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,470
23.07.2020, 13:00 22
Цитата Сообщение от pagpal Посмотреть сообщение
Спасибо, очередной раз выручили. Все работает.
А ещё "красивее" FindFirst вместо DCount():
Кликните здесь для просмотра всего текста
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
        'Табличная часть в таблицу: [Отгрузка]:
        Set rst = CurrentDb.OpenRecordset("InОтгрузка", dbOpenDynaset)
        
        If rst.EOF = False Then rst.MoveLast   'Заполнение набора записями
 
        'For lRowNo = iGoodsTblStart To 10000 + iGoodsTblStart
        For lRowNo = 18 To 10016
            s = "B" & lRowNo 'Наименование товарно-материальных ценностей
            sVal = .Range(s).Value
            If sVal = "" Then Exit For
 
            'Поиск - проверка на наличие в бд
            If rst.EOF = False Then rst.MoveFirst
            s = "Наименование = '" & sVal & "'"
            rst.FindFirst s
            If rst.NoMatch Then 'Если искомое НЕ найдено
 
                rst.AddNew
                iCount = iCount + 1
                rst!ID_Reestr = lDocID
 
                rst!Наименование = sVal
                rst!Колво = Nz(.Range("D" & lRowNo).Value, 0)
                rst!Колво = IIf(Len(.Range("G" & lRowNo)) <= 1, 0, .Range("G" & lRowNo))
                
                rst.Update
            End If
        Next lRowNo
          
        s = "В таблицу [InОтгрузка] добавлено: " & iCount & " записей."
        MsgBox s, vbInformation

Наблюдаю "кашу" в вашей процедуре импорта - надеюсь оптимизируете в последствии.
Успехов!
1
126 / 96 / 33
Регистрация: 28.02.2017
Сообщений: 478
23.07.2020, 16:30  [ТС] 23
Цитата Сообщение от Eugene-LS Посмотреть сообщение
А ещё "красивее"
Спасибо, попробую.

Добавлено через 3 часа 26 минут
Eugene-LS,
Еще один вопрос возник. Поле наименование выбирается в выдающем списке, подскажите как допилить процедуру
Пробовал так, но вылетает
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
        'Табличная часть в таблицу: [Отгрузка]:
        Set rst = CurrentDb.OpenRecordset("InОтгрузка", dbOpenDynaset)
        
        If rst.EOF = False Then rst.MoveLast   'Заполнение набора записями
 
        'For lRowNo = iGoodsTblStart To 10000 + iGoodsTblStart
        For lRowNo = 18 To 10016
            s = "B" & lRowNo 'Наименование товарно-материальных ценностей
            sVal = .Range(s).Value
            If sVal = "" Then Exit For
 
            'Поиск - проверка на наличие в бд
            If rst.EOF = False Then rst.MoveFirst
            s = "Наименование = '" & sVal & "'"
            rst.FindFirst s
            If rst.NoMatch Then 'Если искомое НЕ найдено
 
                rst.AddNew
                iCount = iCount + 1
                rst!ID_Reestr = lDocID
 
                j = Forms![frmZakazЗKart].ПолеСоСписком33.Column(3) 'Название поля куда писать Наименование.
 
                'rst!Наименование = sVal
 
                rst!j = sVal
 
                rst!Колво = Nz(.Range("D" & lRowNo).Value, 0)
                rst!Колво = IIf(Len(.Range("G" & lRowNo)) <= 1, 0, .Range("G" & lRowNo))
                
                rst.Update
            End If
        Next lRowNo
          
        s = "В таблицу [InОтгрузка] добавлено: " & iCount & " записей."
        MsgBox s, vbInformation
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,470
23.07.2020, 16:44 24
Цитата Сообщение от pagpal Посмотреть сообщение
Поле наименование выбирается в выдающем списке, подскажите как допилить процедуру
Не понял вашего вопроса.
0
126 / 96 / 33
Регистрация: 28.02.2017
Сообщений: 478
23.07.2020, 16:58  [ТС] 25
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Не понял вашего вопроса.
rst!Наименование - переменное, Наименование - берется из выдающего списка - ПолеСоСписком33.Column(3), может быть Наименование, Наименование1,Наименование2 и т.д.
Нужно чтобы rst!Наименование изменялось в зависимости от выбранного значения в ПолеСоСписком33.Column(3)
Возможно ли так rst!Выбранное значение = sVal
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,470
23.07.2020, 17:28 26
Лучший ответ Сообщение было отмечено pagpal как решение

Решение

Цитата Сообщение от pagpal Посмотреть сообщение
rst!Наименование - переменное, Наименование - берется из выдающего списка - ПолеСоСписком33.Column(3), может быть Наименование, Наименование1,Наименование2 и т.д.
Ясно.
Токда кусок добавления будет уже таким:
Кликните здесь для просмотра всего текста
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
        'Табличная часть в таблицу: [Отгрузка]:
        Set rst = CurrentDb.OpenRecordset("InОтгрузка", dbOpenDynaset)
        
        'rst!Наименование - переменное, Наименование - берется из выдающего списка - ПолеСоСписком33.Column(3)
        d = ПолеСоСписком33.Column(3)
        If rst.EOF = False Then rst.MoveLast   'Заполнение набора записями
 
        'For lRowNo = iGoodsTblStart To 10000 + iGoodsTblStart
        For lRowNo = 18 To 10016
            s = "B" & lRowNo 'Наименование товарно-материальных ценностей
            sVal = .Range(s).Value
            If sVal = "" Then Exit For
 
            'Поиск - проверка на наличие в бд
            If rst.EOF = False Then rst.MoveFirst
            s = "[" & d & "] = '" & sVal & "'"
            rst.FindFirst s
            If rst.NoMatch Then 'Если искомое НЕ найдено
 
                rst.AddNew
                iCount = iCount + 1
                rst!ID_Reestr = lDocID
 
                rst.Fields(d) = sVal
                rst!Колво = Nz(.Range("D" & lRowNo).Value, 0)
                rst!Колво = IIf(Len(.Range("G" & lRowNo)) <= 1, 0, .Range("G" & lRowNo))
                
                rst.Update
            End If
        Next lRowNo
          
        s = "В таблицу [InОтгрузка] добавлено: " & iCount & " записей."
        MsgBox s, vbInformation


Скорее всего не заработает, но это не важно насколько я понимаю туманную суть вопроса.
1
126 / 96 / 33
Регистрация: 28.02.2017
Сообщений: 478
23.07.2020, 19:22  [ТС] 27
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Скорее всего не заработает
А вот и нет, все работает как надо, спасибо.
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,470
23.07.2020, 19:37 28
Цитата Сообщение от pagpal Посмотреть сообщение
А вот и нет, все работает
Das ist fantastisch!
0
23.07.2020, 19:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2020, 19:37
Помогаю со студенческими работами здесь

ошибка в импорте в Word
пытаюсь импортировать в word с помощью формы Write1 кнопкой, выдает ошибку, подскажите что сделал...

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

Глюк при импорте Excel в Access
Кто знает, почему при импорте файла Excel в Access иногда часть строк обрезается, хотя общее...

Дублирование строки при импорте из ексель
Здравствуйте,коллеги, подскажите пожалуйста в таком вопросе : есть exel таблица, она...

Запрос с параметром при импорте в Excel
Добрый день, уважаемые форумчане! В очередной раз обращаюсь к Вашей помощи. Все пытаюсь доделать...

Автоматическая подстановка при импорте из Excel
Здравствуйте! Возник вопрос: можно ли при импорте из Excel каким-то образом автоматически...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru