Вопрос по ADO....ошибка

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Вопрос по ADO....ошибка

Сообщение SLIM » 23.09.2008 (Вт) 20:21

Работаю с БД Access через ADO.
При попытке вывода какого-нибудь незаполненного поля возникает ошибка Run-Time error "94" "Invalid use of null". Может я не в тот раздел написал.... :?
Может нужно какую-то опцию открытия Recordset написать. В общем не знаю даже как поступить. По поиску не нешел ничего путного
Пишите жизнь на чистовик.....переписать не удастся.....

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Вопрос по ADO....ошибка

Сообщение Antonariy » 23.09.2008 (Вт) 20:34

NULL означает отсутствие значения в поле БД. Значение NULL может иметь только Variant-переменная. Приведение NULL к иному типу напрямую невозможно, поэтому если ты свойству Text1.Text, имеющему тип String, пытаешься присвоить NULL, то получаешь ошибку. NULL нужно обрабатывать самостоятельно, функция IsNull в этом поможет.
Лучший способ понять что-то самому — объяснить это другому.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Вопрос по ADO....ошибка

Сообщение SLIM » 23.09.2008 (Вт) 20:48

Antonariy писал(а):NULL означает отсутствие значения в поле БД

Вау, прикольно. Даже подумать не мог. :D
Antonariy писал(а):Значение NULL может иметь только Variant-переменная

В моем случае формат поля числовой (я говорю о поле в БД, а в textbox-е string. Что поме]нтять то? Я уж и так и так...а никак)
Antonariy писал(а):NULL нужно обрабатывать самостоятельно, функция IsNull в этом поможет.

А вот за IsNull большой респект. Попробую поискать инфу...
А как насчет настроек БД. Может там что-то поменять.

И еще вопрос. Все не представляется возможности проверить (ибо не встречаю компов без офисного пакета мелких). Интересно, будет ли работать приложение используя ADO через драйвер OLEDB если Access не установлен?
Пишите жизнь на чистовик.....переписать не удастся.....

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Вопрос по ADO....ошибка

Сообщение Antonariy » 23.09.2008 (Вт) 21:12

В моем случае формат поля числовой (я говорю о поле в БД, а в textbox-е string. Что поме]нтять то?
Ничего. Просто написать If Not IsNull(rs(x).Value) Then Text1.Text = rs(x).Value
Если лень, то для текстовых полей можно сделать Text1.Text = "" & rs(x).Value — конкатенация NULL интерпретирует как пустую строку. Для числовых соответственно — Val("" & rs(x).Value)
А как насчет настроек БД. Может там что-то поменять.
Можно в свойствах поля запретить NULL и поставить значение по умолчанию. Однако злоупотреблять этим не стоит. Таблицы с большим количеством записей и редко используемых полей охотно набирают лишние мегабайты.
Интересно, будет ли работать приложение используя ADO через драйвер OLEDB если Access не установлен?
Будет. Драйвер акса встроен в систему.
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54

    TopList