![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сортировка в DBGrid [D6, XP]
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