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

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

существование поля [D7, Paradox]


md10 ©   (2008-02-03 00:50:00) 

как определить существование поля в таблице Table, (без использования SQL)


Loginov Dmitry   (2008-02-04 09:18:00) [1]

Вот досада! И править ничего не пришлось :(
Сам всю жизнь FindField() для проверки юзал, а тут такую ерунду насоветовал :(


Loginov Dmitry   (2008-02-04 09:10:00) [2]

Попутал. Сорри!

Теперь придется по работе исправлять результаты данного самовнушения =)


Johnmen   (2008-02-04 09:05:00) [3]

В общем случае проверка [2] не является однозначной. Ибо поле м.б. в НД, но отсутствовать в реальной таблице.
И потом, этот способ "использует SQL", хотя этого и не видно явно.


sniknik   (2008-02-04 08:24:00) [4]

> Хотя в любой делфе для несуществующего поля метод просто возвращает nil
в моей
function TDataSet.FieldByName(const FieldName: string): TField;
begin
 Result := FindField(FieldName);
 if Result = nil then DatabaseErrorFmt(SFieldNotFound, [FieldName], Self);
end;

полное соответствие со справкой.


Loginov Dmitry   (2008-02-04 07:59:00) [5]

> If the specified field does not exist, FieldByName raises
> an EDatabaseError exception.


Видимо, за реализацию FieldByName()и за написание справки отвечали разные люди. Хотя в любой делфе для несуществующего поля метод просто возвращает nil


Германн   (2008-02-04 00:49:00) [6]


> md10   (04.02.08 00:29) [3]
>
>


> -)) так мы определили несуществующее поле, хочешь сказать
> следующее будет правильно по отношению к поиску существующего
> поля?
> if Table1.FieldByName('Имя_существующего_поля') <> nil
> then
>  ShowMessage('Поле существует!');
>

Нет. Читай справку.
Call FieldByName to retrieve field information for a field given its name. FieldName is the name of an existing field. FieldByName returns the TField component that represents the specified field. If the specified field does not exist, FieldByName raises an EDatabaseError exception.


md10   (2008-02-04 00:29:00) [7]


> Loginov Dmitry ©   (03.02.08 11:35) [2]
> if Table1.FieldByName('Имя_несуществующего_поля') = nil
> then
>  ShowMessage('Поле не существует!');

-)) так мы определили несуществующее поле, хочешь сказать следующее будет правильно по отношению к поиску существующего поля?
if Table1.FieldByName('Имя_существующего_поля') <> nil
then
 ShowMessage('Поле существует!');


Loginov Dmitry   (2008-02-03 11:35:00) [8]

if Table1.FieldByName('Имя_несуществующего_поля') = nil then
 ShowMessage('Поле не существует!');


Германн   (2008-02-03 01:17:00) [9]

Копай в сторону DbiOpenFieldList.


Наверх

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