Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

Ошибка с проверкой на 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.043 c
2-1170070648
rosl
2007-01-29 14:37
2007.02.18
следующий номер автоинкриментного поля


2-1170052000
anonimousC++
2007-01-29 09:26
2007.02.18
Вопрос по си++, знаю что это форум по Делфи...


3-1164715445
AndyTh
2006-11-28 15:04
2007.02.18
Данные в Excel


2-1170326279
WhiteBarsik
2007-02-01 13:37
2007.02.18
В EXE не желает включаться "designide"


2-1170056377
Kotofeich
2007-01-29 10:39
2007.02.18
запуск броузера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский