Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Правильная организация интерфейса базы данных

4.2K
14 июля 2005 года
Крыс
98 / / 06.05.2005
Имеется в наличии довольно большая база данных, при этом очень активно использованы элементы закладки DataContlols.
В этом есть свои плюсы, но как выяснилось минусов тоже достаточно.
Просто база сначала планировалась однопользовательской, а терь плавно переходит в много....

Возник вопрос, а не лучше ли было использовать обычные элементы, заполняя их при открытии, и записывая при нажатии на ок?
1
15 июля 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Крыс
Имеется в наличии довольно большая база данных, при этом очень активно использованы элементы закладки DataContlols.
В этом есть свои плюсы, но как выяснилось минусов тоже достаточно.
Просто база сначала планировалась однопользовательской, а терь плавно переходит в много....

Возник вопрос, а не лучше ли было использовать обычные элементы, заполняя их при открытии, и записывая при нажатии на ок?


А в чем разница? Если ты конечно не используешь компоненты типа TTable - тогда сочувствую. А так в принципе контролсы никакого отношения к одно - или многопользовательскому доступу не имеют. Их задача отображать данные из сформированного рекорсета - а формируют его не они. Опиши более подробно проблему - тогда можно будет сказать - что проще. Лучше конечно заполнять самому, это если задача не сложная или уж очень специфичная. Если же это вполне обычная задача и еще и разрабатывается на лету - лучше не изобретать велосипед - выиграш сомнителен.

4.2K
16 июля 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by kot_
А в чем разница? Если ты конечно не используешь компоненты типа TTable - тогда сочувствую.


использую DBTable

Цитата:
А так в принципе контролсы никакого отношения к одно - или многопользовательскому доступу не имеют. Их задача отображать данные из сформированного рекорсета - а формируют его не они. Опиши более подробно проблему - тогда можно будет сказать - что проще.


фишка в том, что может быть открыто много форм, и возникает проблема с поступлением информации из одной формы в другую. поэтому при активации формы - идет переактивация запроса формы, и данные которые не были сохранены - теряются.

Цитата:
Лучше конечно заполнять самому, это если задача не сложная или уж очень специфичная. Если же это вполне обычная задача и еще и разрабатывается на лету - лучше не изобретать велосипед - выиграш сомнителен.


в том то и вопрос, что лучше выбрать..

4.2K
16 июля 2005 года
Крыс
98 / / 06.05.2005
сори, минута помрачения.. естественно никаких TTable..
эт я с гридом перепутала... ваще о другом думала...


савсэм плахой стал....:)
10
17 июля 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Крыс
фишка в том, что может быть открыто много форм, и возникает проблема с поступлением информации из одной формы в другую. поэтому при активации формы - идет переактивация запроса формы, и данные которые не были сохранены - теряются.


Это уже вопрос проектирования.

1
18 июля 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Крыс
сори, минута помрачения.. естественно никаких TTable..
эт я с гридом перепутала... ваще о другом думала...


савсэм плахой стал....:)


Я не совсем понял - что имеется ввиду под переактивацией? И как это происходит?
Скорей всего - вопрос не столько в том заполнять или не заполнять... как происходит оповещение окна о состоянии набора данных? Как происходит обновления набора данных в открытых окнах? Как происходит коммит (и роллбак)в системе?

4.2K
18 июля 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by Freeman
Это уже вопрос проектирования.


ну.. пока это мой вопрос..

Цитата:
Originally posted by kot_
Я не совсем понял - что имеется ввиду под переактивацией? И как это происходит?



системы оповещений нет.. там все просто..
при нажатии на ок - commit, закрытие окна

просто если открыты другие документы, которые обращаются к той же таблице, что и закрываемая форма - даные теряются, у каждой формы есть реквизит типа
CurrentIDRecord

при активации формы - запрос обновляется
qrRegion->active = false;
qrRegion->active = true;
и локейтом устанавливается на нужную запись

10
18 июля 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Крыс
ну.. пока это мой вопрос..


Глупо как-то. Тем более, решать задачи проектирования удаленно по отрывочным данным.

Ты опиши, что надо сделать по задаче, а мы уж постараемся подсказать, как это сделать правильно. И потом ты сама будешь сравнивать, насколько твое решение соответствует предложенному и исправлять или ругать нас.

4.2K
18 июля 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by Freeman
Глупо как-то. Тем более, решать задачи проектирования удаленно по отрывочным данным.

Ты опиши, что надо сделать по задаче, а мы уж постараемся подсказать, как это сделать правильно. И потом ты сама будешь сравнивать, насколько твое решение соответствует предложенному и исправлять или ругать нас.


Не ругайся.. описываю
база данных - справочники (перечень стран, должностей, людей, и т.д) и документы (договора, акты, и т.д) (не бухгалтерия, но система похожая)

пользователь ведет учет документов, изредка пользуясь справочниками.
теперь хронология событий:

возникшая проблема номер раз - при занесении данных в справочник - не обновляются элементв типа DBLookup... на форме документа.
решение - при закрытии формы справочника - commit и активация запроса в дата-модуле..

проблема номер два - в документе могут быть ссылки на другие документы (как на документ - основание для текущего)
решение - то же

побочный эффект - если идет работа с двумя документами одного типа - при сохранении первого завершается транзакция (она как и соединение с базой находится в дата-модуле), и изменения, вносимые во второй документ - теряются..

по началу не планировалось активной работы с документами - и это было приемлемо, а сейчас хочется сделать по-человечески... если есть ссылки что почитать - заранее огромное спасибо, а то номальных книг у нас нет - самое лучшее, что я нашла - билдер 6.0 (серия для разработчика), но там примеры по базам - нереально детские

10
18 июля 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Крыс
но там примеры по базам - нереально детские


Насчет книги - не знаю, а вот тут - моя дискуссия с Александром Смирновым об особенностях проектирования интерфейса прикладных программ для БД.

1
18 июля 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Крыс

возникшая проблема номер раз - при занесении данных в справочник - не обновляются элементв типа DBLookup... на форме документа.
решение - при закрытии формы справочника - commit и активация запроса в дата-модуле..
проблема номер два - в документе могут быть ссылки на другие документы (как на документ - основание для текущего)
решение - то же

побочный эффект - если идет работа с двумя документами одного типа - при сохранении первого завершается транзакция (она как и соединение с базой находится в дата-модуле), и изменения, вносимые во второй документ - теряются..


А что, запрос который формирует DBLookup..., грид и апдейт(инсерт)данных - это один и тот же запрос? Если нет - то тогда при обновлении поля необходимо использовать закладки.

 
Код:
void *Bookmark = adoStationList->GetBookmark();
....
//Выполняется вставка - переоткрывается датасет
adoStationList->Close();
  adoStationList->Open();
  adoStationList->GotoBookmark(Bookmark);
  adoStationList->FreeBookmark(Bookmark);

А если да - то мои соболезнования.:)
1
18 июля 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Крыс

побочный эффект - если идет работа с двумя документами одного типа - при сохранении первого завершается транзакция (она как и соединение с базой находится в дата-модуле), и изменения, вносимые во второй документ - теряются..


А это вообще не понятно - транзакция запускается на все одна?

4.2K
19 июля 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by kot_
А что, запрос который формирует DBLookup..., грид и апдейт(инсерт)данных - это один и тот же запрос? Если нет - то тогда при обновлении поля необходимо использовать закладки.
А если да - то мои соболезнования.:)



я под интербазу пишу, и соответственно запросы формируют IBDataSet-ы.. но в общем DBLookup к основному запросу формы не относится.

спасибо за соболезнования :D

Цитата:
А это вообще не понятно - транзакция запускается на все одна?


Нет, есть несколько дата-модулей по подсистемам - адресной, банковской, доккументной,.. по смыслу.

в каждом - своя транзакция

4.2K
19 июля 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by Freeman
Насчет книги - не знаю, а вот тут - моя дискуссия с Александром Смирновым об особенностях проектирования интерфейса прикладных программ для БД.


Freeman
спасибо, я эту про ссылку почти забыла..
пару ме6сяцев назад мало что оттуда поняла..
ща еще раз попробую.. вроде уже должно дойти, самое время :)

2.1K
25 июля 2005 года
greyich
117 / / 02.02.2005
Цитата:
Originally posted by Крыс
Freeman
спасибо, я эту про ссылку почти забыла..
пару ме6сяцев назад мало что оттуда поняла..
ща еще раз попробую.. вроде уже должно дойти, самое время :)


та же самая бодяга - сначала как открыл так и не понял ни слова. вот наткнулся еще раз и внес в закладки :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог