Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2012, 19:31   #1
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
Вопрос Dataset - что даёт определение полей?

Dataset - даёт ли что-то точное указание (создание, название, указание типа, итп) всех полей Dataset? ведь и без указания Dataset запрашивает все поля у БД. Есть ли разница?
DeveloPerchik вне форума Ответить с цитированием
Старый 06.04.2012, 19:36   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

С одной стороны вроде как лишние компоненты, с другой стороны удобно обращаться к фиелдам без FieldByName, в гриды вставлять явное описание, калькулируемые поля использовать. Обычно только и пользуюсь явным описанием полей
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.04.2012, 19:52   #3
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
По умолчанию

Цитата:
с другой стороны удобно обращаться к фиелдам без FieldByName,
Какая разница Dataset.FieldByName('NUMBER').Value или dfNUMBER.Value? типа букв меньше?
Цитата:
в гриды вставлять явное описание,
Не понял. Без объявления полей на Dataset нажал-отжал Active и все настройки полей Grid'ом восприняты.
Цитата:
калькулируемые поля использовать.
Это понятно. Вопрос про пассивные поля - нужно ли их описывать в каждом Dataset?
DeveloPerchik вне форума Ответить с цитированием
Старый 06.04.2012, 20:11   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
типа букв меньше?
Не только, еще минимизирует возможность ошибки, которая для FieldByName только во время выполнения обнаружится
Цитата:
Без объявления полей на Dataset нажал-отжал Active и все настройки полей Grid'ом восприняты
Если только все поля и в той же последовательности. И поработайте с гридами, в которых динамически изменяется отображаемость колонок, положение, размеры, титулы и фоттеры (в DbGridEh например), состояние которых нужно запомнить при Close формы, чтобы при следующем входе восстановить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 07.04.2012 в 16:32.
Аватар вне форума Ответить с цитированием
Старый 07.04.2012, 11:18   #5
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
По умолчанию

Важных доводов "за" (безотносительно каких-то специфических задач типа калькулируемых полей, динамических гридов) - не услышал.
DeveloPerchik вне форума Ответить с цитированием
Старый 07.04.2012, 12:02   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
минимизирует возможность ошибки
Как сказать... А если эти поля прописаны в INI файле, т.е. датасет у меня настраиваемый извне? Тогда описывать переменную-поле нельзя.
ИМХО - не люблю описывать жестко поля в переменные, мне проще использовать FieldByName
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2012, 12:47   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Важных доводов "за" не услышал.
А их и нет. Каждый пользуйтся тем и так, как ему удобней и как диктуют условия поставленной задачи. И именованный фиелд ничем не отличается от фиелда возвращенного методом FieldByName, достаточно в отладке посмотреть, чтобы убедиться, что это один и тот же объект, просто сравнив например ADOQuery1.FieldByName('Tip') и ADOQuery1Tip
Цитата:
Тогда описывать переменную-поле нельзя
Почему? Я тоже в ini сохраняю настройки гридов и не зависимо от способа работы с фиелдами туда сохраняю просто имена полей
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.04.2012, 13:10   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда 1:1
Действительно тут все зависит от вкусов разработчика
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2012, 14:26   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Могу добавить еще, что FieldByName ищет заданное поле просто перебором в массиве полей и возвращает тип TField, а именованный фиелд это ссылка на фиелд в том же массиве (замечу - нет ни какого цикла поиска, это +), но тип уже привязан к конкретному типу поля (TIntegerField, TDateTimeField и пр., тоже +), что дает определенные удобства при работе с ним. Само собой именованные фиелды не пригодны для работы с датасетами, у которых список полей может изменяться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.04.2012, 14:58   #10
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
Вопрос

Цитата:
Сообщение от Аватар Посмотреть сообщение
Могу добавить еще, что FieldByName ищет заданное поле просто перебором в массиве полей и возвращает тип TField, а именованный фиелд это ссылка на фиелд в том же массиве (замечу - нет ни какого цикла поиска, это +), но тип уже привязан к конкретному типу поля (TIntegerField, TDateTimeField и пр., тоже +)
А по скорости это что-то даёт? Или определение полей в кол-ве до 50шт это ерундовая незаметная задержка?

Мне лично очень не понравилось, что нельзя сделать "просто поле" и указать ему "тип данных", а под каждый тип данных нужно создавать разные типы полей. В итоге процесс создания полей геморнее чем мог бы быть и если тип данных изменился в БД - нельзя просто изменить тип поля, а нужно удалить поле и заново создавать поле...

Последний раз редактировалось DeveloPerchik; 07.04.2012 в 15:00.
DeveloPerchik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа не даёт выключить компьютер Shouldercannon Общие вопросы Delphi 3 22.08.2011 11:12
Строку из одного DataSet в другой DataSet Abbath1349 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 22.05.2011 19:26
c++ ..при компиляции даёт ошибку.. silveran Помощь студентам 6 17.05.2011 15:32
Из DataSet работающего по циклу в DataSet maroder22 БД в Delphi 1 05.09.2010 23:22
Что делать, если имена полей динамические? Rock'n'rolla Работа с сетью в Delphi 1 25.01.2010 14:56