Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.025 c
2-1170082958
iviom
2007-01-29 18:02
2007.02.18
Как разобраться с языком и региональными настройками?


15-1169629269
ocean
2007-01-24 12:01
2007.02.18
Посоветуйте алгоритм


2-1169983925
SerJaNT
2007-01-28 14:32
2007.02.18
Проиграть звук


15-1170106499
vasIzmax
2007-01-30 00:34
2007.02.18
"Достучаться до небес", саунд


2-1170337282
op120
2007-02-01 16:41
2007.02.18
Не полные минуты в секунды.




   Наверх