powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка для типа данных.
12 сообщений из 12, страница 1 из 1
Ошибка для типа данных.
    #32529542
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую Ac97.
Я хочу записать данные из списка во временную таблицу. (с помощью мультиселекта), таким образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim db As Database
Set db = CurrentDb
Dim rstTable As DAO.Recordset
Set rstTable = db.OpenRecordset("временная_таблица", dbOpenDynaset)
Dim objVariant As Variant
Dim intCounter As Integer
intCounter = 0For Each objVariant In Список.ItemsSelected
rstTable.AddNew
rstTable!Мое_числовое_поле = Список.Column( 1 , objVariant)
rstTable.Update
Next
rstTable.Close
Раньше все работало, но потом почему-то перестало работать и
Access пишет: "Data type conversion error" Ошибка преобразования типа данных. (Ошибка 3421). "Данные не могут быть преобразованы ядром базы данных Microsoft Jet к типу, требуемому методом или свойством. Такая ошибка обычно возникает, если указан аргумент одного типа, а для метода или свойства требуется другой тип."
Ругается на строчку:
Код: plaintext
rstTable!Мое_числовое_поле = Список.Column( 1 , objVariant) 
В исходной таблице (на основе которой записываются данные из списка) тип данных числовой, во временной таблице, в которую хочу записать данные, формат поля тоже числовой.
Как мне программно указать, что тип поля у меня числовой?
Или же я не там копаю?
Скажите свое мнение, PLEASE.
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529556
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аналогичного сообщения на твоем коде удалось добиться только при описании "Мое_числовое_поле" как дата/время
любые другие сочетания числа столбцов и типов данных этого не дают
(добытый Null а гасит он можно вставить в текст и числовой)
+ приведение типов данных:
- CDec
- CDate
- Clong
-...
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529565
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удалось добиться только при описании "Мое_числовое_поле" как дата/время
Но у меня "Мое_числовое_поле" точно не дата/время - сам еще раз проверил.
У меня "Мое_числовое_поле" и в исходной таблице и в таблице "Временная" тип данных "числовой", "длинное целое".
Я специально выбираю строчку без Null, но выдает такую же ошибку. :-(
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529569
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал так:
Код: plaintext
1.
2.
3.
Dim MyVal, MyLong
    MyVal = Список.Column( 1 , objVariant)
    MyLong = CLng(MyVal)
    rstTable!Мое_числовое_поле  = Список.Column( 1 , objVariant
)
Ругается, говорит - "ошибка выполнения 13", несоответствие типа.
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529585
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
MyLong = CLng(MyVal)
rstTable!Мое_числовое_поле  = Список.Column( 1 , objVariant
а надо
Код: plaintext
1.
rstTable!Мое_числовое_поле =MyLong 
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529600
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shuhard:
Большое спасибо, вроде помогло.
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529611
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я погорячился.
Эта функция:
Код: plaintext
1.
2.
Dim MyVal, MyLong
MyVal = Список.Column( 1 , objVariant)
rstTable!Мое_числовое_поле = MyLong
Просто записывает вместо числовых значений Null в таблицу, т.е. ошибки конечно не происходит, но данные пропадают.
Может я опять что-то неправильно записал?
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529615
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
реальный код доктору на стол
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529620
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, ну я все понимаю... но MyLong неплохо бы инициализировать.
т.е.
Код: plaintext
1.
2.
3.
4.
5.
Dim MyVal, MyLong
MyVal = Список.Column( 1 , objVariant)
MyLong = CLng(MyVal) '  --- Инициализируем, таки, MyLong ---
 
rstTable!Мое_числовое_поле = MyLong
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529625
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
доктор не нужен
Gyslik ты свой код просматриваешь перед публикацией в столь возвышенном месте ?
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529634
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
Private Sub Кнопка67_Click()
DoCmd.SetWarnings False
Dim db As Database
Set db = CurrentDb
DoCmd.RunSQL "DELETE * FROM тбл_временная"
Dim rstTable As DAO.Recordset
Set rstTable = db.OpenRecordset("тбл_временная", dbOpenDynaset)
Dim objVariant As Variant
Dim intCounter As Integer
intCounter =  0 

For Each objVariant In Список4.ItemsSelected
    rstTable.AddNew
    rstTable!Дата = Список4.Column( 1 , objVariant)
    rstTable!Тип_канала = Список4.Column( 4 , objVariant)
    rstTable!Наименование_канала = Список4.Column( 3 , objVariant)
    rstTable![Адрес/Название_объекта] = "сектор_" & Список4.Column( 5 , objVariant)
    rstTable!Брэнд = Список4.Column( 7 , objVariant)
    rstTable!Продукт = Список4.Column( 8 , objVariant)
    rstTable!Жирность = Список4.Column( 10 , objVariant)
    rstTable!Тип_упаковки = Список4.Column( 9 , objVariant)
    rstTable!Объем = Список4.Column( 11 , objVariant)
    rstTable!Цена = Список4.Column( 12 , objVariant)
    rstTable!Область = Null
    rstTable!Неделя = Null
    rstTable!Номер_измерения = Null 
    rstTable!Дистрибуция = Null
    rstTable!Тип_операции = Список4.Column( 13 , objVariant)
    rstTable!Номер_недели = Null
    rstTable!Фактическое_измерение = Null
    rstTable!Привед_жирность = Null
    rstTable!Стоимость_упаковки = Null
    rstTable!Группа_каналов = Null
    rstTable!Проверка_допустимости = Null
    rstTable!Источник = Список4.Column( 14 , objVariant)
    rstTable!Пустое_поле1 = Null
    rstTable!Пустое_поле2 = Null
    rstTable!Пустое_поле3 = Null
    rstTable!Пустое_поле4 = Null
    
    Dim MyVal, MyLong
    MyVal = Список4.Column( 15 , objVariant)
    rstTable!ПРОБЛЕМНОЕ_ПОЛЕ = MyLong

    rstTable!Адрес = Список4.Column( 6 , objVariant)
    rstTable.Update
Next

rstTable.Close

DoCmd.OpenForm "пфр_сохранить_любые_данные", , , , , acDialog
strMessage = "Данные были успешно выгружены в Excel."
intOptions = vbQuestion + vbOKOnly
If bytChoice = vbCancel Then GoTo ex
DoCmd.SetWarnings True
ex:   
End Sub
...
Рейтинг: 0 / 0
Ошибка для типа данных.
    #32529639
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Bely & Shuhard:
А я все смотрю на код, вроде бы что-то действительно не то, но думаю, тут гуру сидят неправильно сказать не могут!
А так, спасибо, все работает!
Да, а код я к сожалению уже выложил, не успел прочитать предыдущий пост.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка для типа данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]