Отделение текста от цифры в одном поле при импорте в 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]
При импорте из 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
Сообщение отредактировал 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
Группа: Админы
Ранг: Местный житель
Сообщений: 19409
Репутация:
4558
±
Замечаний:
±
Excel 365 & Mac Excel
Объясните словами, что Вы хотите получить в таблице Access, вместо текстового значения в числовом поле?
Объясните словами, что Вы хотите получить в таблице Access, вместо текстового значения в числовом поле? Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ответить
Сообщение Объясните словами, что Вы хотите получить в таблице Access, вместо текстового значения в числовом поле? Автор - Pelena Дата добавления - 21.08.2015 в 19:19
AndreTM
Дата: Пятница, 21.08.2015, 22:52 |
Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация:
501
±
Замечаний:
0% ±
2003 & 2010
Tarasov_Ivan , а зачем вам ещё отдельная функция проверки? Просто сразу преобразуйте текст в число, используя Val() или CDbl(), например [vba]Код
rst("Цена в рублях, без НДС").Value = CDbl(Replace(Range("f" & 1 + i).Value, ".", ","))
[/vba]
Tarasov_Ivan , а зачем вам ещё отдельная функция проверки? Просто сразу преобразуйте текст в число, используя Val() или CDbl(), например [vba]Код
rst("Цена в рублях, без НДС").Value = CDbl(Replace(Range("f" & 1 + i).Value, ".", ","))
[/vba]AndreTM
Skype: andre.tm.007 Donate: Q iwi: 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. Необходимо условие,типа: если число в заданном поле, то делаем одно, если не число, то делаем другое, записав это "не другое" в комментарии
в таблице Access, поле "Цена в рублях, без НДС" - числовое. в Excel, поле - общее. В Excel в основном в заданном поле хранятся числа, но может встретиться и текст типа "снят с производства" или ошибка вычисления типа "#н/д", при этом выполнение кода прекращается из-за не соответствия формата. Хочется обработать текст или ошибку, без прекращения кода, записав их в другое поле "комментарии" в таблице Access. Необходимо условие,типа: если число в заданном поле, то делаем одно, если не число, то делаем другое, записав это "не другое" в комментарии Tarasov_Ivan
Сообщение отредактировал 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'у без заморочек...
в заданном поле хранятся числа, но может встретиться и текст
Так почему бы их заранее в исходных не разнести в два поля/столба - данные и примечания к ним?! И XL'ю удобнее, и Access'у без заморочек... TimSha
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
Сообщение отредактировал TimSha - Воскресенье, 23.08.2015, 19:20
Ответить
Сообщение в заданном поле хранятся числа, но может встретиться и текст
Так почему бы их заранее в исходных не разнести в два поля/столба - данные и примечания к ним?! И XL'ю удобнее, и Access'у без заморочек... Автор - TimSha Дата добавления - 23.08.2015 в 19:18
AndreTM
Дата: Воскресенье, 23.08.2015, 19:59 |
Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация:
501
±
Замечаний:
0% ±
2003 & 2010
Типа так? [vba]Код
vPrice = Range("f" & 1 + i).Value If IsNumeric(vPrice) Then rst("Цена в рублях, без НДС").Value = vPrice Else rst("Комментарий").Value = "Цена: " & vPrice & " " & rst("Комментарий").Value
[/vba]
Типа так? [vba]Код
vPrice = Range("f" & 1 + i).Value If IsNumeric(vPrice) Then rst("Цена в рублях, без НДС").Value = vPrice Else rst("Комментарий").Value = "Цена: " & vPrice & " " & rst("Комментарий").Value
[/vba] AndreTM
Skype: andre.tm.007 Donate: Q iwi: 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
Группа: Админы
Ранг: Местный житель
Сообщений: 19409
Репутация:
4558
±
Замечаний:
±
Excel 365 & Mac Excel
Tarasov_Ivan , проверьте такой вариант. Помимо проверки ЧИСЛО/ТЕКСТ/ОШИБКА пришлось ещё навести порядок в IF/END IF
Tarasov_Ivan , проверьте такой вариант. Помимо проверки ЧИСЛО/ТЕКСТ/ОШИБКА пришлось ещё навести порядок в IF/END IFPelena
"Черт возьми, Холмс! Но как??!!" Ю-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