![]() |
|
Модераторы: Akina |
![]()
|
|
| PittOn |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
Доброго времени суток!
Проблема при добавлении в DBF таблицу числовых данных в поля типа NUMERIC. Средствами ADO создаю DBF файл и добавляю в него данные, выбранные из другой базы (.gdb). Строка подключения к DBF: "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=D:\dbase\;Extended Properties=dBase 5.0;" При добавлении данных в поля типа CHAR все нормально, но когда добавляешь именно числовые данные в поле типа NUMERIC - выдает ошибку: Run-time error '-2147217887 (80040e21)': Размер поля недостаточен, чтобы принять добавляемые данные. Попробуйте вставить меньшее количество данных. Не пойму, в чем причина, ведь при создании таблицы я явно указываю разрядность числового поля.. Вот кусок кода, где создается таблица DBF:
Далее добавляю данные в эту DBF-ку, предварительно открыв еще соединение с базой gdb и взяв оттуда нужные данные:
Все классно работает, если задать полю SMOPER символьный тип, но такого я делать не буду. Нужно число. Записи также добавляются, если я в строке подключения вместо dBase 5.0 указываю dBase IV или dBase III, но тогда формат поля SMOPER получается с пятью знаками после запятой, какую бы я точность при создании DBF таблицы не ставил.. Есть какие-нибудь мысли насчет добавления числовых данных в таблицу dBase 5.0? Мож кто сталкивался с подобным? Или подскажите пожалуйста, как сделать так, чтоб при создании DBF таблицы версии IV или III создавались числовые поля с нужной точностью (в данном случае 2 знака после запятой). Заранее спасибо! |
||||
|
|||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
А с какой стати с DBF стали работать через Microsoft.Jet. ? Далее: какой размер числа, которое ты пытаешься засунуть в numeric ? Попробуй задать ему (полю) максимальный размер, 20. И вообще, в DBF типы полей обозначаются C или N. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| PittOn |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
Через Microsoft.Jet.OLEDB.4.0 нормально работаю с DBF-ками.. Данные то добавляются, но только в поля типа CHAR, а в NUMERIC - ни в какую.. :(
Засовываю значение максимум содержащие 5 символов. даже простое число 1 не присваивается.. Если типы полей указывать как C или N, тогда при создании таблицы выдает ошибку.. А так как у меня они объявлены - DBF-ка создается.. Задавая полю таблицы dBase 5.0 макс. размер 20, то поле все равно создается с размером 16 знаков... |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
В общем, я с DBF работаю черехз драйверы фокса (правда, из Дельфи, но суть та же), и у меня всё, мною перечисленное, работает нормально. Данные же я вставляю запросом (через AdoQuery).
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| PittOn |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
Вот вот... я уже попробовал повставлять данные запросом..:
Работает с пол-оборота. Это радует, но таблицы большие и вставка данных запросами INSERT INTO почему-то длится заметно дольше, чем тем через rs.AddNew...rs.Update. Поэтому пытаюсь обойти вставку с помощью запросов... |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
UpdateBatch
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| PittOn |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
Не спасает |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Попробовал, кстати - поле SMOPER получается не (10,2), а (20,2)
Добавлено через 6 минут и 9 секунд Разобрался. Драйвер требует в качестве разделителя целой и дробной частей запятую - из локали, видимо... так что
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| PittOn |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
Akina
Нет, дело не в этом.. Что то тут странное... Если сделать как ты пишешь
то тогда ошибка остается. У меня в настройках рег. стандартов в качестве разделителя стоит "," . если поменять на точку - пишет "Несовпадение типов". Далее, я заметил, что даже целое число не удается вставить. Пробовал тупо rs1!SMOPER = 1. Прокатывает только одно: вставка значения Null (rs1!SMOPER = Null). А если шаг влево, швг вправо - ошибка -2147217887 (80040e21) либо несовпадение типов :( Насчет размера поля... Тут тоже я удивился: у тебя поле (20,2) получается если задать размер (10,2)? Правильно я понял? А у меня какую бы размерность поля я не задавал, у меня оно получается 16,2...Вот Это сообщение отредактировал(а) PittOn - 24.4.2009, 17:32 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Странно... у меня работает на "ура"... правда, я вставляю статические данные, типа
SP. Я использовал либу ADO 2.8. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| PittOn |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
гыгы...
|
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |