Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сортировка в DBGrid [D6, XP]


Страницы:   1 2 3

Alex34 ©   (2009-04-10 10:55:00) 

Всем доброго времени суток! Подскажите пожалуйста как сделать сортировку по щелчку на зоголовок колонки в DBGridе. спасибо!


sniknik   (2009-04-14 13:17:00) [21]

блин, опечатка, надо
... и завязки на ... -> ... и беззавязки на ...


sniknik   (2009-04-14 12:15:00) [22]

> По событию AfterScroll Мастера делаем переоткрытие детального датасета, подставляя "вручную" в параметры запроса значение ключей мастера.
нафига? связь мастер - детайл и так это делает, и завязки на AfterScroll/OnDataChange(тоже нехорошо, т.к. будут лишние вызовы).
т.е. только первый вариант и все, но однозначно с заменой TADOTable, чтобы сделать мастер - детайл на запросах.


Alex34   (2009-04-14 11:35:00) [23]

Я так думаю со связями все нормально. Дело скорее всего в коде. Новые данные нужно записа в таблицу Реклама, а уже потом ID будет заносится в таблицу Контаткт. Кажется как-то так. Наверное.


Ega23   (2009-04-13 17:10:00) [24]


> Это уже нюансы - я показал технологию, дальше "сама, сама,
>  сама" :)


Фигасе "нюансы"!
Вещь-то принципиальная...


MsGuns   (2009-04-13 17:05:00) [25]

>Ega23 ©   (13.04.09 15:36) [15]
>Нельзя на AfterScroll завязываться. TDataSource.OnDataChange
>Иначе событие обновления Detail будет срабатывать всегда, даже в случае >Master.DisableControls

Это уже нюансы - я показал технологию, дальше "сама, сама, сама" :)

>Alex34 ©   (13.04.09 15:57) [16]
>Именно так, по 1 способу, все и делаю. В мастер вношу ID таблицы Реклама, в детал Idреклама >таблицы Контакт. Но  ничего не получается!!!!

Значит, не так


Alex34   (2009-04-13 15:57:00) [26]

Именно так, по 1 способу, все и делаю. В мастер вношу ID таблицы Реклама, в детал Idреклама таблицы Контакт. Но  ничего не получается!!!!


Ega23   (2009-04-13 15:36:00) [27]


> 1) По событию AfterScroll Мастера делаем переоткрытие детального
> датасета, подставляя "вручную" в параметры запроса значение
> ключей мастера. Эффект будет тот же, но переоткрытие будет
> выполняться кодом.


Нельзя на AfterScroll завязываться. TDataSource.OnDataChange
Иначе событие обновления Detail будет срабатывать всегда, даже в случае Master.DisableControls


MsGuns   (2009-04-13 15:19:00) [28]

Связь в общем случае делается так:
Определяется "основная" таблица (в дальнейшем "Master")
Определяется "дополнительная" таблица (в дальнейщем "Detail")

Связь между масетром и деталом должна быть по одному или нескольким полям, содержимое которых имеется в обеих таблицах (например "ФИО" и/или "Наименование")

Дальше идем одним из 2-х способов:

1. Используем связку DataSource детального датасета, в которой указываем мастер и в качестве связующих полей - нужные. Связка будет проиходить автоматически - при перемещении по масету в детал будут "подкачиваться" записи, ключи которых совпадают с ключами текущей записи мастера

2. Вместо TADOTable используем запросы (что, впрочем, корректно и более грамотно будет и для 1) По событию AfterScroll Мастера делаем переоткрытие детального датасета, подставляя "вручную" в параметры запроса значение ключей мастера. Эффект будет тот же, но переоткрытие будет выполняться кодом.


Alex34   (2009-04-13 11:42:00) [29]

Извиняюсь, если чтото не понятно. Пишу программу на диплом. Задача состоит в автоматизации работы с рекламой. База Access, в ней таблицы: -Реклама, Контакт, таблицы Прайс, Доппрайс, Рекламодатель используются как справочники. Это задача максимум. Я хочу сделать так: запись в таблице Реклама должна хранить дату, стоимость, текст и ссылку на таблицу Контакт, содержащей ФИО или Наименование подавших объявление. Сейчас получается наоборот в DBGrid (Контак) выбираю подавшего объявление в DBGrid (Реклама) появляется соответствующая запись.


Anatoly Podgoretsky   (2009-04-13 11:33:00) [30]

> Alex34  (13.04.2009 10:29:08)  [8]

Добавь в список отображаемых полей.


Ega23   (2009-04-13 10:58:00) [31]


> Его там нет. Вернее доже так, он там есть, если  в DataSours
> главной сделать таблицу Контакт, но тогда получается в таблице
> Реклама показывается только та запись которая относится
> к ID выбранного контакта. Получается фильтр, а нужно что
> бы idконтакт просто отображался, без фильтра.


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


Alex34   (2009-04-13 10:48:00) [32]

Его там нет. Вернее доже так, он там есть, если  в DataSours главной сделать таблицу Контакт, но тогда получается в таблице Реклама показывается только та запись которая относится к ID выбранного контакта. Получается фильтр, а нужно что бы idконтакт просто отображался, без фильтра.


Ega23   (2009-04-13 10:36:00) [33]


> необходимо чтобы  в idконтакт отображался ID записи таблицы
> контакт.


Он и так там будет отображаться.


Alex34   (2009-04-13 10:29:00) [34]

А если по русски и для не особо одаренных.
Имеются две таблицы
Реклама
ID
idконтакт
Текст
Стоимость

Контакт
ID
ФИО
ИНН и так далее
необходимо чтобы  в idконтакт отображался ID записи таблицы контакт.


Ega23   (2009-04-13 10:03:00) [35]


> А кто нибудь пожет помочь со связями таблиц.


Inner Join + F1


Alex34   (2009-04-13 09:20:00) [36]

Сапасибо за помощь. А кто нибудь пожет помочь со связями таблиц.


Ega23   (2009-04-10 15:56:00) [37]


> Вас спрашивают, что используется: TADOTable, TADOQuery или
> TADODataSet?


Или вообще не ADO  :)


Amoeba   (2009-04-10 15:40:00) [38]


> DBGrid связана с базой через DataSource.

И ежу понятно, что других вариантов нет.

Вас спрашивают, что используется: TADOTable, TADOQuery или TADODataSet?


MsGuns   (2009-04-10 15:39:00) [39]

ADODataSet.Sort :=DBGrid.Columns[индекс "кликнутой" колонки].Field.FieldName //+' D'

Выполнять по клику на заголовке грида


Alex34   (2009-04-10 15:13:00) [40]

Если можно по подробней. DBGrid связана с базой через DataSource. База Access


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо