8 / 8 / 0
Регистрация: 21.05.2016
Сообщений: 45
1

Ошибка: "Попытка присвоить значение Null переменной, не принадлежащей к типу Variant"

21.06.2016, 12:45. Показов 7552. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Вкратце: на форме среди прочих полей есть три поля со списком. Установлены нужные мне свойства Ограничиться списком и Автоподстановка. Источник строк берется из таблицы, а данные сохраняются в виде ID строки.
Так вот, когда я выбрал в списке значение и перевел фокус на другое поле - все нормально, но когда я удаляю (очищаю поле) после выбора, то при попытке перевода фокуса на другое поле выскакивает ошибка "Попытка присвоить значение Null переменной, не принадлежащей к типу Variant". Я понимаю, программа ругается на присваивание пустой строки (Null) ячейке в таблице, куда должно быть записано число (ID). Если нажать Esc, то ошибки нет.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2016, 12:45
Ответы с готовыми решениями:

Ошибка: попытка присвоить значение Null переменной, не принадлежащей к типу Variant
Всем привет, такое задание: есть главная форма, через которую находишь базу данных. В этой же форме...

Ошибка: "Попытка присвоить Null переменной, не принадлежащей к типу Variant"
Пишу диплом по АРМ конструктора судостроителя, вообщем-то БД, появилась такая проблема при...

Попытка присвоить значение Null переменной
Подскажите, пожалуйста, как решить проблему. После нажатия кнопки "Добавить", выходит сообщение об...

Метод Симпсона - попытка присвоить значение integer переменной типа real
Как исправить ошибку? В строке N2:= n/2; пишет попытка присвоить значение integer переменной типа...

Присвоить переменной типа bool? значение null
Добрый день! Имеется mysql БД с таблицей, значение поля (тип int(1) по умолчанию NULL) может...

13
547 / 274 / 50
Регистрация: 03.04.2015
Сообщений: 926
21.06.2016, 19:05 2
очищайте поле другим способом.
0
8 / 8 / 0
Регистрация: 21.05.2016
Сообщений: 45
21.06.2016, 20:08  [ТС] 3
Цитата Сообщение от corbis Посмотреть сообщение
очищайте поле другим способом.
Круто ответили!
Такое чувство, что написали лишь бы написать.
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
21.06.2016, 20:22 4
Цитата Сообщение от Litron Посмотреть сообщение
Я понимаю, программа ругается на присваивание пустой строки (Null) ячейке в таблице, куда должно быть записано число (ID).
Думаю, что не так. Вы же сами написали сообщение
Цитата Сообщение от Litron Посмотреть сообщение
Попытка присвоить значение Null переменной, не принадлежащей к типу Variant
Покажите код присваивания. Скорее всего Null присваивается типизированной переменной. Что, конечно вызовет ошибку. Типа такого:
Visual Basic
1
2
Dim ID As Integer
ID=Null 'Здесь будет ошибка
Если переменная будет Variant, то ошибки не будет
Visual Basic
1
2
Dim ID  'или ID As Variant
ID=Null 'Нет ошибки
0
8 / 8 / 0
Регистрация: 21.05.2016
Сообщений: 45
21.06.2016, 20:31  [ТС] 5
Приведу пример на одном поле со списком: значения из таблицы (например, Вася, Дима, Петя, Коля) вместе со столбцом ID подставляются в поле со списком. Создается новая запись, поэтому поле пустые. В коде отслеживаю их значение - оно равно Null. Когда набираю значение в поле из списка, значение поля равно Null, даже если я набрал все слово целиком. Только когда поле теряет фокус - значение поля равно набранному значению, т.е. значению из списка.
Если просто выделить и удалить значение из поля со списком, то когда поле потеряет фокус выскакивает ошибка "Попытка присвоить значение Null переменной, не принадлежащей к типу Variant". Почему эта ошибка выскакивает и как ее отловить чтобы обработать? Я пробовал через событие Потеря Фокуса, но ошибка выскакивает раньше, через событие Обновление тоже не катит.
Получается, что при создании новой записи поля принимают значение Null и это нормально, но когда вносишь значение в поле и удаляешь, то значение тоже Null, но это проге не нравится.

Добавлено через 2 минуты
Цитата Сообщение от mobile Посмотреть сообщение
Покажите код присваивания
В том то и дело, что кода на поле нет ни какого. В поле источник стоит таблица со значениями ID и Наименование, а в поле данные поле из запроса. В запрос уходит значение ID из поля со списком.

Сейчас базы под рукой нет, завтра постараюсь скинуть.
0
Эксперт MS Access
7395 / 4532 / 295
Регистрация: 12.08.2011
Сообщений: 14,015
22.06.2016, 03:45 6
Цитата Сообщение от Litron Посмотреть сообщение
программа ругается на присваивание пустой строки (Null) ячейке в таблице
Дайте определение ячейки в таблице Акцесс. Что это?
0
8 / 8 / 0
Регистрация: 21.05.2016
Сообщений: 45
22.06.2016, 06:08  [ТС] 7
Цитата Сообщение от alvk Посмотреть сообщение
Дайте определение ячейки в таблице Акцесс. Что это?
К чему это?
0
8 / 8 / 0
Регистрация: 21.05.2016
Сообщений: 45
22.06.2016, 06:29  [ТС] 8
Вот сама БД.
Форма Ввод оборудования (или с Кнопочной "Ввод/правка оборудования"). Попробуйте заполнить поле со списком, а потом удалить и поставить курсор в другое поле.
Вложения
Тип файла: rar Учет оборудования v1 - копия.rar (230.4 Кб, 21 просмотров)
0
Эксперт MS Access
7395 / 4532 / 295
Регистрация: 12.08.2011
Сообщений: 14,015
22.06.2016, 06:34 9
Цитата Сообщение от Litron Посмотреть сообщение
К чему это?
к тому, что вы написали. Я не знаю, что такое ячейка в таблице Акцесс, вот и спрашиваю у вас. Хочется услышать ответ.
0
8 / 8 / 0
Регистрация: 21.05.2016
Сообщений: 45
22.06.2016, 06:49  [ТС] 10
Цитата Сообщение от alvk Посмотреть сообщение
Хочется услышать ответ.
И мне хочется услышать ответ на мой вопрос.

Когда я писал про ячейку я имел ввиду Значение таблицы, которое находится на пересечении n-ой строки и n-ого столбца.
Теперь
Хочется услышать ответ.
0
шапоклякистка 8-го дня
3678 / 2238 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
22.06.2016, 06:55 11
Цитата Сообщение от Litron Посмотреть сообщение
Когда я писал про ячейку я имел ввиду Значение таблицы, которое находится на пересечении n-ой строки и n-ого столбца.
В базах данных ни у строк, ни у столбов нет номеров. Строки равноправны и могут быть пересортированы в любом порядке, и невозможно значть заранее, какая строка имеет какой номер; у столбцов тоже только имена, а не номера.
0
Эксперт MS Access
7395 / 4532 / 295
Регистрация: 12.08.2011
Сообщений: 14,015
22.06.2016, 06:58 12
Цитата Сообщение от Litron Посмотреть сообщение
Теперь
Теперь я тоже должен написать то, что в голову взбредёт?
0
шапоклякистка 8-го дня
3678 / 2238 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
22.06.2016, 07:20 13
Лучший ответ Сообщение было отмечено Litron как решение

Решение

Цитата Сообщение от Litron Посмотреть сообщение
Если просто выделить и удалить значение из поля со списком, то когда поле потеряет фокус выскакивает ошибка "Попытка присвоить значение Null переменной, не принадлежащей к типу Variant". Почему эта ошибка выскакивает
Потому что вы пытаетесь обнулить поле, по которому в запосе-источнике даных установлена связь между таблицами.

Если вы сохраните запрос, на котором основана форма, и попытаетесь обнулить это же поле в этом запросе - получите точно такую же ошибку.

Добавлено через 7 минут
Цитата Сообщение от Litron Посмотреть сообщение
и как ее отловить чтобы обработать?
Только на событии, которое происходит раньше попытки присвоения значения полю:

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Объект_Change()
    If Len(Объект.Text) = 0 Then
        Beep
        MsgBox "Это поле не может быть пустым"
        SendKeys "{Esc}"
    End If
' дальше ваш теперешний код, на мой взгляд бессмысленный напрочь - я бы удалила 
    If Заметки.Value = "" Then Заметки.Value = " " 
End Sub
1
8 / 8 / 0
Регистрация: 21.05.2016
Сообщений: 45
22.06.2016, 07:48  [ТС] 14
Цитата Сообщение от texnik-san Посмотреть сообщение
дальше ваш теперешний код, на мой взгляд бессмысленный напрочь - я бы удалила
Я сам понимаю что бессмыслица, но по другому не получается. Если без этой строчки занести только данные в 3 поля со списком и сохранить, то в таблице Дополнительно не будет создана новая запись и ничего не будет привязано к основной таблице Помещения. Вот вышел из положения таким варварским способом.

А за ответ спасибо, то что нужно)
0
22.06.2016, 07:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2016, 07:48
Помогаю со студенческими работами здесь

Попытка присвоить переменной integer выражение real. Как исправить ошибку?
Здравствуйте, такой вопрос, как исправить данную ошибку? Задание такое: "Заполните все элементы,...

Ошибка при попытке присвоить переменной значение какого-то свойства объекта.
Добрые люди подскажите новичку пожалуйста. не могу найти информацию, почему же не работает, а в...

Как в VB переменной типа Date присвоить Null
Подскажите плиз... Как, в VB, переменной типа Date присвоить Null или Empty? Дело в том, что поле...

Попытка присвоить значение ячейке в функции выдает #ЗНАЧ
Создаю пустую таблицу. В VBA создаю модуль с единственной ф-цией: Public Function MUSOR() ...

Как присвоить типу char значение string?
При выполнении строки w.at(1)=l; выдает error2440 cannot convert from std::string to char как...

Попытка присвоить переменной типа integer выражение типа real
Здравствуйте! Моя задача: Найти сумму всех n-значных чисел, кратных k (1 ≤ п ≤ 4). Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru