Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

Ошибка с проверкой на Null   Найти похожие ветки 

 
Feds   (2006-11-27 13:24) [0]

Здравствуйте уважаемые!
возникла ситуация не могу разобраться: работаю с ИБ.
получаю в датасет данные.
 if Dataset.FieldByName(link_exp).Value <> Null then
       s := Dataset.FieldByName(link_exp).AsString;

вылетает со словами не могу преобразовать Null в вариант.
.isNull - всегда выдает false.
В чем причина?


 
Feds   (2006-11-27 13:25) [1]

любая попытка обращения к данным из поля вызывает ошибку. Данное поле есть в таблице проверял


 
DrPass ©   (2006-11-27 13:33) [2]


> .isNull - всегда выдает false.

А ты уверен, что значение поля в этом случае именно NULL? Проверь еще раз, внимательнее. А код исправь на
if not Dataset.FieldByName(link_exp).IsNull then
       s := Dataset.FieldByName(link_exp).AsString;


 
Desdechado ©   (2006-11-27 13:34) [3]

> любая попытка обращения к данным из поля вызывает ошибку
даже s := Dataset.FieldByName(link_exp).AsString ?
Какую?

> link_exp
это что такое?


 
Feds   (2006-11-27 13:35) [4]

я же написал что .isNull -false всегда
и тогда   s := Dataset.FieldByName(link_exp).AsString; - вылетает тут


 
Feds   (2006-11-27 13:35) [5]

link_exp - строка с именем поля


 
Feds   (2006-11-27 13:37) [6]

даже s := Dataset.FieldByName(link_exp).AsString ? - не могу преобразовать Null в стринг


 
Desdechado ©   (2006-11-27 13:43) [7]

Компоненты доступа?
IB какой версии?
Совпадает ли версия клиента с версией сервера?


 
Feds   (2006-11-27 13:47) [8]

при таком  if Dataset.FieldByName(link_exp).Value <> Null
ошибка весьма странная, но именно на этой строчке
не могу приобразлвать вариант (Null) в стринг


 
Feds   (2006-11-27 13:48) [9]

TDataSet - использую


 
Feds   (2006-11-27 13:49) [10]

доступ к данным через универсального провайдера. По идеи отвязывающего от БД


 
clickmaker ©   (2006-11-27 13:50) [11]


> [5] Feds   (27.11.06 13:35)

а отладчик-то что кажет? что в этом поле?


 
Desdechado ©   (2006-11-27 13:51) [12]

> TDataSet - использую
какого типа датасет?


 
Feds   (2006-11-27 14:00) [13]


> а отладчик-то что кажет? что в этом поле?

отладчик кажет в Dataset.FieldByName(link_exp).Value
ЕвариантТупекастЕррор


 
Feds   (2006-11-27 14:06) [14]


> > TDataSet - использую
> какого типа датасет?

просто TDataSet


 
Feds   (2006-11-27 14:09) [15]

была подобная ситуация при добавлении данных, когда флаг фильтраред стоял. после добавления курсор слетал и при обращении получался подобный эксепшен. но сейчас ничего не добавляется и фильраред не стоит...


 
Desdechado ©   (2006-11-27 15:33) [16]

> просто TDataSet
Many of these properties, events, and methods are abstract (Delphi) or pure virtual (C++) in TDataSet. Abstract or pure virtual declarations are declarations without implementations.


 
Feds   (2006-11-27 16:20) [17]

в этом же случае используется метод финдБайНаим, а он исходя из кода в ТдатаСет реализован.


 
clickmaker ©   (2006-11-27 16:23) [18]


> [14] Feds   (27.11.06 14:06)
>
> > > TDataSet - использую
> > какого типа датасет?
>
> просто TDataSet

а данные-то откуда в нем?


 
ЮЮ ©   (2006-11-28 02:43) [19]

как в SQL, так и в Delphi нелья сравнивать с NULL влоб ( = или <>).
В SQL для этого есть IS NULL, а в Delphi VarIsNull()


 
Виталий Панасенко   (2006-11-28 12:46) [20]

По-моему, человек все сказал тут

> DrPass ©   (27.11.06 13:33) [2]


 
ЮЮ ©   (2006-11-28 13:04) [21]

Всё он сказал здесь:

Feds   (27.11.06 14:06) [14] TDataSet - использую
> какого типа датасет?
просто TDataSet


Поэтому доверять его словам о том, что
.isNull -false всегда
и тогда   s := Dataset.FieldByName(link_exp).AsString; - вылетает - не могу преобразовать Null в стринг

никак не получается.

А вот изыски типа
Dataset.FieldByName(link_exp).Value <> Null
запросто приведут к такому. Причем не обязательно в строке, где автор видит, а где-то в рбработчике, навешанном на DataSet.
Поэтому, прежде чем гнать на TDataSet надо
1) убрать из своего кода такие прелести
2) пройтись отладчиком чуть глубже своего кода.
А ошибки возможны и в VCL. На днях рассматривали TDBLookupCombo. Но чтобы TDataSet такие заподлянки выкидывал ... :)



Страницы: 1 вся ветка

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.05 c
15-1169518575
Spider_NET
2007-01-23 05:16
2007.02.18
Конкурс


2-1170078591
NPC
2007-01-29 16:49
2007.02.18
Связи между таблицами


2-1169972656
koha
2007-01-28 11:24
2007.02.18
indy - пример из книги Подгородетского


15-1170080238
Arpilin
2007-01-29 17:17
2007.02.18
Нужны исходники дефрагментатора диска


15-1169657987
Rouse_
2007-01-24 19:59
2007.02.18
Мини ММП в пятницу