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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2012, 22:34   #21
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

1. DisableControls роли не играет ибо Lookup.
Отключить в LookupField связь с LookupDataset - значит уничтожить текущий LookupField.Value - что и приводит к ошибкам о которых идёт речь...

2-3. Как-то заморочено. На самом деле задача очень простая - как обновить FIBDataset, чтобы не глючили Lookup, то есть чтобы Dataset не Close или LookupField.Value не уничтожались? но решения я пока не нашёл... поэтому подумал про создание Dataset3 о чём собственно тема, но и это сделать в авто режиме нельзя.

Цитата:
но и lookup не пользуюсь
Как обходитесь?

Последний раз редактировалось delphicoding; 21.03.2012 в 22:38.
delphicoding вне форума Ответить с цитированием
Старый 22.03.2012, 17:35   #22
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
поэтому подумал про создание Dataset3 о чём собственно тема, но и это сделать в авто режиме нельзя.
Цитата:
(копию одного а не из двух сделать один основной камень преткновения). TdataSet.clone
Цитата:
Цитата:
но и lookup не пользуюсь
Как обходитесь?
Не делаю редактирование напрямую в таблице.
1. Таблицы только для показа полностью сформированных на SQL данных
2. Для любой редакции свои формы.
2.1. SQL получение достаточных но минимально необходимых для выполнения редакции.
2.2 набор простых (не DB!) компонент (я их просто не очень люблю).
2.3 Запись данных SQL only.(только нужные данные).

Больше писать? Да, но и гибкость, и нет проблем.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.03.2012, 22:46   #23
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
С того, что любого проца даже Pentium133 хватит для копирования пары колонок данных внутри программы за 1секунду.
Наивное мнение... Не хочешь мне верить - убедись на своих граблях.
Цитата:
Мне бы хотелось обойтись без этих заскоков.
Тут много "но" придется взвешивать. Зависит от ТЗ, нет четкого ответа в каких случаях поступать так а в каких так. Оптимизация многопользовательского приложения дело не шуточное.
Цитата:
обойтись для редакции без Dataset зависимых компонент.
Присоединяюсь. Сам так делал, и не пожалел.
Цитата:
Но реально эти справочники редактируются редко - 1-10 раз в день.
Хорошо. Допустим согласен - скачать их на клиента оправдано.
Цитата:
Но, такого автоматизированного механизма видимо нет.
Я тебе скажу так: Я когда свой проект делал по подобного рода области вообще отказался от DB компонентов. Подключился, получил данные, всунул их в динамический список, отключился - сижу работаю.
В динсписке я уже их верчу как хочу, без ограничений, предусмотренных в Датасетах (Кстати эти ограничения скорее пренадлежат провам ODBC, ADO или что ты там юзаешь... а не Датасетам Делфи как таковым).
В общем основной совет - фтопку лишние ограничивающие компоненты.

Кстати как альтернативный вариант сюда же - хранить справочную информацию не централизованно а на клиенте. Если она редко обновляется и требуется клиенту в полной мере часто, децентрализация может помочь разгрузить слабую сеть (сам видел эффект такого недавно).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2012, 11:13   #24
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

evg_m
Сурово.

Цитата:
обойтись для редакции без Dataset зависимых компонент.
Присоединяюсь. Сам так делал, и не пожалел.
без ограничений, предусмотренных в Датасетах
Будьте так любезны поподробнее... в чём реальные ограничения Dataset и преимущество без оных?
delphicoding вне форума Ответить с цитированием
Старый 23.03.2012, 14:15   #25
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

А что тут по подробнее?
Приложение собирается так сказать из 3 слоев. А не как у вас из 2.
Вы сейчас идете по пути интерфейс->БД.
А то о чкм говорит evg_m выглядит как интерфейс->(объекты/процедуры/обработчики)->БД
В среднем слое реализуется механизм взаимодействия между интерфейсом и БД.
Обычно путем построения объектов/классов.
Это ООП а не процедурное программирование в отличие от вашего подхода.
Так сказать следующий ливел программиста...
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 23.03.2012, 21:54   #26
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Отключить в LookupField связь с LookupDataset
изыскания в справке привели к этому.
Цитата:
Lookup is provided for backward compatibility. To determine if a field is a lookup field, use the FieldKind property instead When FieldKind is fkLookup, Lookup is true. When FieldKind is any other value, Lookup is false. Changing Lookup to false implicitly sets FieldKind to fkData.
see also
Цитата:
The value of FieldKind can be changed programmatically, but in practice FieldKind is set at design time when creating Field components with the Fields editor.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 23.03.2012, 22:16   #27
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в чём реальные ограничения Dataset и преимущество без оных?
Например ты при определенных условиях, на которые нарвался, не можешь без суперклассинга компонента сделать его редактируемым.
Или по другому - рвется связь, что с твоим ДатаСетом случится? Глюканет как минимум на ошибку, и придется переподключаться.
Датасеты нужно постоянно держать активированными в отличие от динмассивов.
Еще раз повторюсь - этот компонент был предназначен всего лишь как связующее звено между программой и компонентом - провайдером.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.03.2012, 11:55   #28
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Цитата:
Приложение собирается так сказать из 3 слоев. А не как у вас из 2.
Вы сейчас идете по пути интерфейс->БД.
А то о чкм говорит evg_m выглядит как интерфейс->(объекты/процедуры/обработчики)->БД
А чем Dataset не 3й слой??
Цитата:
Это ООП а не процедурное программирование в отличие от вашего подхода.
Так сказать следующий ливел программиста...
На мой взгляд это больше похоже на след уровень извращения. А след уровень программинга - это ассемблер.
Цитата:
Lookup is provided for backward compatibility. To determine if a field is a lookup field, use the FieldKind property instead When FieldKind is fkLookup, Lookup is true. When FieldKind is any other value, Lookup is false. Changing Lookup to false implicitly sets FieldKind to fkData.
The value of FieldKind can be changed programmatically, but in practice FieldKind is set at design time when creating Field components with the Fields editor.
Большое спасибо, ваши ответы, как всегда - самые подробные и по-существу!
Почитал, попробовал, но это действие в данном случае сбрасывает Lookup список и все его значения, то есть если юзер выбрал LookupList.Value, затем: а) то что вы написали только что или б) о чём писал ранее - открывается связанный с LookupDataset справочник и делается перезапрос в БД типа LookupDataset.Close-Open - так вот всё равно в обоих случаях Lookup.Value теряется, правда по вашему последнему варианту - без ошибок. Но терять в Lookup поле LookupList.Value также неправильно, так что спасибо, но задачу можно аккуратно решить только по обозначенному в начале темы курсу.
Цитата:
Датасеты нужно постоянно держать активированными в отличие от динмассивов.
Но у динмассивов нет никаких функций и с ними нельзя напрямую связать ни один компонент интерфейса - всё заново писать вручную???
delphicoding вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Dataset создать дубликат колонки? delphicoding Общие вопросы Delphi 11 19.03.2012 19:11
Расчет данных одного диапазона по двум критериям двух других alexsampler Microsoft Office Excel 4 29.07.2011 18:08
Выбор значения относительно двух других oleg_sh Microsoft Office Excel 8 05.12.2010 19:52
Можно ли в DataSet установить relationship междщу таблицами? GenniY БД в Delphi 3 25.06.2010 12:23
Как сделать БД на основе двух других PARTOS Microsoft Office Excel 8 11.12.2009 07:54