Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Отделение текста от цифры в одном поле при импорте в Access - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Access » Отделение текста от цифры в одном поле при импорте в Access
Отделение текста от цифры в одном поле при импорте в Access
Tarasov_Ivan Дата: Пятница, 21.08.2015, 13:26 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
При импорте из Excel в Access возникает ошибка, когда вместо цифры стоит текст.
Возможно ли обойди, это как-нибудь образом не изменяя формата поля в Access?
Я попытался следующим образом, но выдает, что функция не объявлена:

[vba]
Код
Private Function IsNonText()

End Function
[/vba]
[vba]
Код
Sub fromExcelToAccess()

Dim dbe As Object 'DAO.DBEngine
Dim db As Object 'DAO.Database
Dim rst As Object 'DAO.Recordset
Dim i As Long
Dim b1 As Boolean

Set dbe = CreateObject("DAO.DBEngine.120")
Set db = dbe.OpenDatabase("C:\db_product.accdb")
Set rst = db.OpenRecordset("select * from WAGO", 2) 'dbopendynaset

For i = 1 To Range("b" & Cells.Rows.Count).End(xlUp).Row - 1
rst.findfirst "Артикул='" & Range("b" & 1 + i).Value & "'"
If rst.nomatch Then
rst.AddNew

[b]Set b1 = IsNonText(Range("f" & 1 + i).Value)
If b1 Then[/b]
rst("Короткий артикул").Value = Range("a" & 1 + i).Value
rst("Артикул").Value = Range("b" & 1 + i).Value
rst("Описание_RU").Value = Range("c" & 1 + i).Value
rst("Количество в упаковке").Value = Range("d" & 1 + i).Value
[b]rst("Цена в рублях, без НДС").Value = Range("f" & 1 + i).Value[/b]
rst("Группа продукции").Value = Range("g" & 1 + i).Value
rst("Код группы изделий/Серия").Value = Range("h" & 1 + i).Value
rst("Скидка").Value = Range("i" & 1 + i).Value
Else
rst("Короткий артикул").Value = Range("a" & 1 + i).Value
rst("Артикул").Value = Range("b" & 1 + i).Value
rst("Описание_RU").Value = Range("c" & 1 + i).Value
rst("Количество в упаковке").Value = Range("d" & 1 + i).Value
rst("Комментарий").Value = Range("f" & 1 + i).Value
rst("Группа продукции").Value = Range("g" & 1 + i).Value
rst("Код группы изделий/Серия").Value = Range("h" & 1 + i).Value
rst("Скидка").Value = Range("i" & 1 + i).Value
Комментарий
Else
rst.Edit
rst("Цена в рублях, без НДС").Value = Range("f" & 1 + i).Value
End If
rst.Update
Next
MsgBox "Готово!"
End Sub
[/vba]
[moder]Оформляйте коды тегами (кнопка #). Исправила на первый раз[/moder]
К сообщению приложен файл: db_product.zip (74.8 Kb) · 2780911.xlsm (35.4 Kb)


Сообщение отредактировал Tarasov_Ivan - Пятница, 21.08.2015, 14:47
 
Ответить
СообщениеПри импорте из Excel в Access возникает ошибка, когда вместо цифры стоит текст.
Возможно ли обойди, это как-нибудь образом не изменяя формата поля в Access?
Я попытался следующим образом, но выдает, что функция не объявлена:

[vba]
Код
Private Function IsNonText()

End Function
[/vba]
[vba]
Код
Sub fromExcelToAccess()

Dim dbe As Object 'DAO.DBEngine
Dim db As Object 'DAO.Database
Dim rst As Object 'DAO.Recordset
Dim i As Long
Dim b1 As Boolean

Set dbe = CreateObject("DAO.DBEngine.120")
Set db = dbe.OpenDatabase("C:\db_product.accdb")
Set rst = db.OpenRecordset("select * from WAGO", 2) 'dbopendynaset

For i = 1 To Range("b" & Cells.Rows.Count).End(xlUp).Row - 1
rst.findfirst "Артикул='" & Range("b" & 1 + i).Value & "'"
If rst.nomatch Then
rst.AddNew

[b]Set b1 = IsNonText(Range("f" & 1 + i).Value)
If b1 Then[/b]
rst("Короткий артикул").Value = Range("a" & 1 + i).Value
rst("Артикул").Value = Range("b" & 1 + i).Value
rst("Описание_RU").Value = Range("c" & 1 + i).Value
rst("Количество в упаковке").Value = Range("d" & 1 + i).Value
[b]rst("Цена в рублях, без НДС").Value = Range("f" & 1 + i).Value[/b]
rst("Группа продукции").Value = Range("g" & 1 + i).Value
rst("Код группы изделий/Серия").Value = Range("h" & 1 + i).Value
rst("Скидка").Value = Range("i" & 1 + i).Value
Else
rst("Короткий артикул").Value = Range("a" & 1 + i).Value
rst("Артикул").Value = Range("b" & 1 + i).Value
rst("Описание_RU").Value = Range("c" & 1 + i).Value
rst("Количество в упаковке").Value = Range("d" & 1 + i).Value
rst("Комментарий").Value = Range("f" & 1 + i).Value
rst("Группа продукции").Value = Range("g" & 1 + i).Value
rst("Код группы изделий/Серия").Value = Range("h" & 1 + i).Value
rst("Скидка").Value = Range("i" & 1 + i).Value
Комментарий
Else
rst.Edit
rst("Цена в рублях, без НДС").Value = Range("f" & 1 + i).Value
End If
rst.Update
Next
MsgBox "Готово!"
End Sub
[/vba]
[moder]Оформляйте коды тегами (кнопка #). Исправила на первый раз[/moder]

Автор - Tarasov_Ivan
Дата добавления - 21.08.2015 в 13:26
Pelena Дата: Пятница, 21.08.2015, 19:19 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19185
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Объясните словами, что Вы хотите получить в таблице Access, вместо текстового значения в числовом поле?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеОбъясните словами, что Вы хотите получить в таблице Access, вместо текстового значения в числовом поле?

Автор - Pelena
Дата добавления - 21.08.2015 в 19:19
AndreTM Дата: Пятница, 21.08.2015, 22:52 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Tarasov_Ivan, а зачем вам ещё отдельная функция проверки? Просто сразу преобразуйте текст в число, используя Val() или CDbl(), например
[vba]
Код
rst("Цена в рублях, без НДС").Value = CDbl(Replace(Range("f" & 1 + i).Value, ".", ","))
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеTarasov_Ivan, а зачем вам ещё отдельная функция проверки? Просто сразу преобразуйте текст в число, используя Val() или CDbl(), например
[vba]
Код
rst("Цена в рублях, без НДС").Value = CDbl(Replace(Range("f" & 1 + i).Value, ".", ","))
[/vba]

Автор - AndreTM
Дата добавления - 21.08.2015 в 22:52
Tarasov_Ivan Дата: Воскресенье, 23.08.2015, 19:13 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
в таблице Access, поле "Цена в рублях, без НДС" - числовое. в Excel, поле - общее. В Excel в основном в заданном поле хранятся числа, но может встретиться и текст типа "снят с производства" или ошибка вычисления типа "#н/д", при этом выполнение кода прекращается из-за не соответствия формата. Хочется обработать текст или ошибку, без прекращения кода, записав их в другое поле "комментарии" в таблице Access.
Необходимо условие,типа: если число в заданном поле, то делаем одно, если не число, то делаем другое, записав это "не другое" в комментарии


Сообщение отредактировал Tarasov_Ivan - Воскресенье, 23.08.2015, 19:16
 
Ответить
Сообщениев таблице Access, поле "Цена в рублях, без НДС" - числовое. в Excel, поле - общее. В Excel в основном в заданном поле хранятся числа, но может встретиться и текст типа "снят с производства" или ошибка вычисления типа "#н/д", при этом выполнение кода прекращается из-за не соответствия формата. Хочется обработать текст или ошибку, без прекращения кода, записав их в другое поле "комментарии" в таблице Access.
Необходимо условие,типа: если число в заданном поле, то делаем одно, если не число, то делаем другое, записав это "не другое" в комментарии

Автор - Tarasov_Ivan
Дата добавления - 23.08.2015 в 19:13
TimSha Дата: Воскресенье, 23.08.2015, 19:18 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 627
Репутация: 94 ±
Замечаний: 0% ±

Excel 2013 Pro +
в заданном поле хранятся числа, но может встретиться и текст

Так почему бы их заранее в исходных не разнести в два поля/столба - данные и примечания к ним?! И XL'ю удобнее, и Access'у без заморочек... ;)


"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)

Сообщение отредактировал TimSha - Воскресенье, 23.08.2015, 19:20
 
Ответить
Сообщение
в заданном поле хранятся числа, но может встретиться и текст

Так почему бы их заранее в исходных не разнести в два поля/столба - данные и примечания к ним?! И XL'ю удобнее, и Access'у без заморочек... ;)

Автор - TimSha
Дата добавления - 23.08.2015 в 19:18
AndreTM Дата: Воскресенье, 23.08.2015, 19:59 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Типа так?
[vba]
Код
vPrice = Range("f" & 1 + i).Value
If IsNumeric(vPrice) Then rst("Цена в рублях, без НДС").Value = vPrice Else rst("Комментарий").Value = "Цена: " & vPrice & " " & rst("Комментарий").Value
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеТипа так?
[vba]
Код
vPrice = Range("f" & 1 + i).Value
If IsNumeric(vPrice) Then rst("Цена в рублях, без НДС").Value = vPrice Else rst("Комментарий").Value = "Цена: " & vPrice & " " & rst("Комментарий").Value
[/vba]

Автор - AndreTM
Дата добавления - 23.08.2015 в 19:59
Pelena Дата: Воскресенье, 23.08.2015, 20:29 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19185
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Tarasov_Ivan, проверьте такой вариант.
Помимо проверки ЧИСЛО/ТЕКСТ/ОШИБКА пришлось ещё навести порядок в IF/END IF
К сообщению приложен файл: 1996102.xlsm (34.7 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеTarasov_Ivan, проверьте такой вариант.
Помимо проверки ЧИСЛО/ТЕКСТ/ОШИБКА пришлось ещё навести порядок в IF/END IF

Автор - Pelena
Дата добавления - 23.08.2015 в 20:29
Tarasov_Ivan Дата: Понедельник, 24.08.2015, 22:33 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо, последние, то что и хотелось
 
Ответить
СообщениеСпасибо, последние, то что и хотелось

Автор - Tarasov_Ivan
Дата добавления - 24.08.2015 в 22:33
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Access » Отделение текста от цифры в одном поле при импорте в Access
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!