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

Ваш аккаунт

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

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

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

объединение DATASET?

513
12 августа 2008 года
Yurec
228 / / 21.09.2005
Все довольно просто:
Имеется DBGRID, имеется связанный с ним DATASOURSE1, который в свобю очередь связан с DATASET1.
Есть ли возможность в DBGRID сразу отображать строки из DATASET1 и еще некоего DATASET2? То есть существуют ли возможности объединения датасетов? Или какие еще есть варианты :) ?
Заранее всем спасибо!
8
13 августа 2008 года
mfender
3.5K / / 15.06.2005
Имеющимися средствами нельзя. Ибо один DataSource := один DataSet.
А вообще, мне не понятна суть этого всего. Набор данных, который отображается в сетке для того и существует, чтобы работать с ним. Теоретически, не может сложиться ситуации для работы с данными, особенно UPDATE, из разных наборов. Это противоречит самой идее баз данных, ибо в результате невозможно сохранить целостность.
513
13 августа 2008 года
Yurec
228 / / 21.09.2005
Цитата: mfender
Имеющимися средствами нельзя. Ибо один DataSource := один DataSet.
А вообще, мне не понятна суть этого всего. Набор данных, который отображается в сетке для того и существует, чтобы работать с ним. Теоретически, не может сложиться ситуации для работы с данными, особенно UPDATE, из разных наборов. Это противоречит самой идее баз данных, ибо в результате невозможно сохранить целостность.




Согласен. Я поясню более четко свою ситуацию:
Редактирование не требуется, необходимо только отображение данных в сетке.
Произошло обращение программы к БД, в результате чего в сетке виден набор данных (например 10 записей).
Происходит второе обращение к БД и запрос возвращает уже не 10, а, скажем, 8 записей. Суть моей задачи: отобразить в сетке 8 оставшихся записей с красным фоном и 2 "ушедшие записи" с зеленым фоном. Естественно, эти 2 зеленые ушедшие записи в нововм DATASETе отсутствуют (потому они и ушедшие:) ).
Какова была идея: Сделать 2 датасета сначала обновить первый, затем обновить второй, в результате чего во втором датасете 8 записей, в первом-10. Далее их отфильтровать (свойством Filter) соединить и отобразить то, что получилось. Идея, конечно, немного мутноватая, да и как оказалось нерешаемая.
Если будут идеи как лучше это реализовать, буду признателен.

11
13 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Yurec
Все довольно просто:
Имеется DBGRID, имеется связанный с ним DATASOURSE1, который в свобю очередь связан с DATASET1.
Есть ли возможность в DBGRID сразу отображать строки из DATASET1 и еще некоего DATASET2? То есть существуют ли возможности объединения датасетов? Или какие еще есть варианты :) ?
Заранее всем спасибо!



Выход: загонять в DATASET1 данные из разных источников, посредством SQL (UNION), при этом для корректного редактирования и сохранения целостности данных необходимы внешние ключи в используемых источника.

513
13 августа 2008 года
Yurec
228 / / 21.09.2005
Цитата: oxotnik333
Выход: загонять в DATASET1 данные из разных источников, посредством SQL (UNION), при этом для корректного редактирования и сохранения целостности данных необходимы внешние ключи в используемых источника.



Можно было бы попробовать, но дело в том что в БД таких записей уже не будет. Мне нужно отследить ушедшие из БД записи (между первым и вторым обращением к БД). А отследить их видится возможным только сохраняя на стороне клиента в какие-то датасеты и т.д.

11
13 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Yurec
Можно было бы попробовать, но дело в том что в БД таких записей уже не будет. Мне нужно отследить ушедшие из БД записи (между первым и вторым обращением к БД). А отследить их видится возможным только сохраняя на стороне клиента в какие-то датасеты и т.д.


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

513
13 августа 2008 года
Yurec
228 / / 21.09.2005
Цитата: oxotnik333
во временные таблицы можно, либо продумывать структуру БД таким образом, что бы записи напрямую не удалялись сразу, а ставилась пометка на удаление (по этой пометке можно раскрашивать в гриде) а по окончании сессии клиента применялась бы транзакция, которая физически удаляла помеченные записи.


К БД у меня права только на чтение, поэтому никак.

513
14 августа 2008 года
Yurec
228 / / 21.09.2005
Все переписал. отказался от DBGRID вообще.
Все данные, которые есть в DataSet вывожу в обыкновенный StringGrid, а потом в этот же StringGrid добавляю сохраненные (ушедшие из запроса) строки с зеленоым цветом.

Хочу поделиться своим мнением: StringGrid намного круче чем DBGrid. Действительно полявилась полная свобода, что хочу то вывожу и главное как хочу. Если будут стоять не станартные задачи - совет юзайте StringGrid. Там даже с выделением и поиском выделенных строк оказалось проще в разы. + DBGrid станлартный довольно глючный оказался в области выделения строк и прочего, а в стрингриде все супер, по крайней мере реализуется то что нужно довольно просто.

так что если кому интересно или кто с чем мучается - могу помочь своим небольшим опытом
8
14 августа 2008 года
mfender
3.5K / / 15.06.2005
я так вообще уже давно не юзаю TDBGrid, а пишу под конкретную беду наследыша от TListView ;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог