Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка для типа данных. / 12 сообщений из 12, страница 1 из 1
23.05.2004, 02:40
    #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
23.05.2004, 09:23
    #32529556
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка для типа данных.
аналогичного сообщения на твоем коде удалось добиться только при описании "Мое_числовое_поле" как дата/время
любые другие сочетания числа столбцов и типов данных этого не дают
(добытый Null а гасит он можно вставить в текст и числовой)
+ приведение типов данных:
- CDec
- CDate
- Clong
-...
...
Рейтинг: 0 / 0
23.05.2004, 10:02
    #32529565
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка для типа данных.
удалось добиться только при описании "Мое_числовое_поле" как дата/время
Но у меня "Мое_числовое_поле" точно не дата/время - сам еще раз проверил.
У меня "Мое_числовое_поле" и в исходной таблице и в таблице "Временная" тип данных "числовой", "длинное целое".
Я специально выбираю строчку без Null, но выдает такую же ошибку. :-(
...
Рейтинг: 0 / 0
23.05.2004, 10:17
    #32529569
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка для типа данных.
Написал так:
Код: plaintext
1.
2.
3.
Dim MyVal, MyLong
    MyVal = Список.Column( 1 , objVariant)
    MyLong = CLng(MyVal)
    rstTable!Мое_числовое_поле  = Список.Column( 1 , objVariant
)
Ругается, говорит - "ошибка выполнения 13", несоответствие типа.
...
Рейтинг: 0 / 0
23.05.2004, 12:35
    #32529585
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка для типа данных.
Код: plaintext
1.
2.
MyLong = CLng(MyVal)
rstTable!Мое_числовое_поле  = Список.Column( 1 , objVariant
а надо
Код: plaintext
1.
rstTable!Мое_числовое_поле =MyLong 
...
Рейтинг: 0 / 0
23.05.2004, 13:04
    #32529600
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка для типа данных.
2 Shuhard:
Большое спасибо, вроде помогло.
...
Рейтинг: 0 / 0
23.05.2004, 13:45
    #32529611
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка для типа данных.
Я погорячился.
Эта функция:
Код: plaintext
1.
2.
Dim MyVal, MyLong
MyVal = Список.Column( 1 , objVariant)
rstTable!Мое_числовое_поле = MyLong
Просто записывает вместо числовых значений Null в таблицу, т.е. ошибки конечно не происходит, но данные пропадают.
Может я опять что-то неправильно записал?
...
Рейтинг: 0 / 0
23.05.2004, 13:51
    #32529615
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка для типа данных.
реальный код доктору на стол
...
Рейтинг: 0 / 0
23.05.2004, 13:58
    #32529620
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка для типа данных.
Нет, ну я все понимаю... но MyLong неплохо бы инициализировать.
т.е.
Код: plaintext
1.
2.
3.
4.
5.
Dim MyVal, MyLong
MyVal = Список.Column( 1 , objVariant)
MyLong = CLng(MyVal) '  --- Инициализируем, таки, MyLong ---
 
rstTable!Мое_числовое_поле = MyLong
...
Рейтинг: 0 / 0
23.05.2004, 14:03
    #32529625
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка для типа данных.
доктор не нужен
Gyslik ты свой код просматриваешь перед публикацией в столь возвышенном месте ?
...
Рейтинг: 0 / 0
23.05.2004, 14:13
    #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
23.05.2004, 14:22
    #32529639
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка для типа данных.
2 Bely & Shuhard:
А я все смотрю на код, вроде бы что-то действительно не то, но думаю, тут гуру сидят неправильно сказать не могут!
А так, спасибо, все работает!
Да, а код я к сожалению уже выложил, не успел прочитать предыдущий пост.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка для типа данных. / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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