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

Вниз

существование поля   Найти похожие ветки 

 
md10   (2008-02-03 00:50) [0]

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


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

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


 
Loginov Dmitry ©   (2008-02-03 11:35) [2]

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


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


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

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


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


> 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.


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

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


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


 
sniknik ©   (2008-02-04 08:24) [6]

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

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


 
Johnmen ©   (2008-02-04 09:05) [7]

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


 
Loginov Dmitry ©   (2008-02-04 09:10) [8]

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

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


 
Loginov Dmitry ©   (2008-02-04 09:18) [9]

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



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

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

Наверх




Память: 0.48 MB
Время: 0.018 c
10-1147935317
Mielofon
2006-05-18 10:55
2008.07.13
IStream появился в качестве параметров


2-1213167659
deras
2008-06-11 11:00
2008.07.13
Как обнулить счетчик генератора в FireBird?


11-1172423656
Vladimir Kladov
2007-02-25 20:14
2008.07.13
Версия 2.54


2-1213321722
AlexanderMS
2008-06-13 05:48
2008.07.13
Включить код на C в проект, написанный на Delphi


2-1213607057
Forsaken
2008-06-16 13:04
2008.07.13
Работа с OpenDialog и Zip-подобными архивами.