Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не работает Locate если есть пустые значения


Пауло Сержио ©   (2015-05-25 12:10:00) 

ADOTable.Locate по полю не работает, если есть пустые значения в таблице. Как обойти?

Перебор с доп. условием "не равно NULL" работает, но хотелось бы использовать Locate.


while not Tpers.Eof do begin  //проверка на окончание строк
 if ADOTable1['Fam']<>NULL then if AnsiUpperCase(ADOTable1['Fam']) = AnsiUpperCase(Edit1.Text) then break;
 ADOTable1; //перемещение на следующую строку
end;


Заранее благодарю!


Ega23   (2015-05-26 10:32:00) [1]


> ограничения на поиск записи равной null не существует


Я locate крайний раз использовал году так не помню в каком. Но до 2005 - это стопудово. Помню, что там какие-то параметры есть, кроме перечисления полей-значений, а вот какие - хоть убейте, не помню.


sniknik   (2015-05-26 09:57:00) [2]

> Locate - вредная штука. Ищет с начала до первой попавшейся записи, плюс имеет всякие ограничения.
даже если и так, ограничения на поиск записи равной null не существует. косяк ТС существует, а ограничение нет... косяк он как суслик, ты его не видишь? и я нет, а он есть.


Пауло Сержио   (2015-05-25 13:57:00) [3]

Locate - вредная штука. Ищет с начала до первой попавшейся записи, плюс имеет всякие ограничения.
:(((

if ADOTable1.FieldByName['Fam'].IsNull ?
спасибо! :)


Ega23   (2015-05-25 13:23:00) [4]


> только избавляюсь от пустых значений в БД - сразу Locate
> начинает работать.


Locate - вредная штука. Ищет с начала до первой попавшейся записи, плюс имеет всякие ограничения.


junglecat   (2015-05-25 13:03:00) [5]

if ADOTable1.FieldByName['Fam'].IsNull ?


Пауло Сержио   (2015-05-25 12:59:00) [6]

1. Во-первых, надо IsNull использовать, ЕМНИП.
компилятор ругается (XE8)
[dcc32 Error] Unit1.pas(164): E2003 Undeclared identifier: 'ISNULL'

2. во-вторых, зачем каждый раз AnsiUpperCase(Edit1.Text) делать? Сразу нельзя?
виноват, исправлюсь :) Но сути не меняет, Locate надо, а он на пустых значениях искать не хочет :(
только избавляюсь от пустых значений в БД - сразу Locate начинает работать.


Ega23   (2015-05-25 12:32:00) [7]

1. Во-первых, надо IsNull использовать, ЕМНИП.
2. во-вторых, зачем каждый раз AnsiUpperCase(Edit1.Text) делать? Сразу нельзя?


Наверх

Титульная страница Поиск, карта сайта Написать письмо