Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.07;
Скачать: CL | DM;

Вниз

Сортировка в DBGrid   Найти похожие ветки 

 
Alex34 ©   (2009-04-10 10:55) [0]

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


 
Ega23 ©   (2009-04-10 12:03) [1]

Отсортировать связанный с DBGrid набор данных. Как - зависит от природы потомка TDataSet


 
Alex34 ©   (2009-04-10 15:13) [2]

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


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

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

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


 
Amoeba ©   (2009-04-10 15:40) [4]


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

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

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


 
Ega23 ©   (2009-04-10 15:56) [5]


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


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


 
Alex34 ©   (2009-04-13 09:20) [6]

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


 
Ega23 ©   (2009-04-13 10:03) [7]


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


Inner Join + F1


 
Alex34 ©   (2009-04-13 10:29) [8]

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

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


 
Ega23 ©   (2009-04-13 10:36) [9]


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


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


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

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


 
Ega23 ©   (2009-04-13 10:58) [11]


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


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


 
Anatoly Podgoretsky ©   (2009-04-13 11:33) [12]

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

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


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

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


 
MsGuns ©   (2009-04-13 15:19) [14]

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

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

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

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

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


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


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


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


 
Alex34 ©   (2009-04-13 15:57) [16]

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


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

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

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

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

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


 
Ega23 ©   (2009-04-13 17:10) [18]


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


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


 
Alex34 ©   (2009-04-14 11:35) [19]

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


 
sniknik ©   (2009-04-14 12:15) [20]

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


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

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


 
Alex34 ©   (2009-04-15 15:06) [22]

Наконец разобрался. Дело было не в связях, а в коде. Нужно было сначала сохранять таблицу Реклама, а потом потом таблицу Контакт. Всвязи с этим новый вопрос возник. Как сделать чтобы ADODataSet.Edit редактировал последнюю введенную запись.


 
Anatoly Podgoretsky ©   (2009-04-15 15:21) [23]

> Alex34  (15.04.2009 15:06:22)  [22]

Предварительно встать на нее.


 
Alex34 ©   (2009-04-15 15:57) [24]

Подскажи как. Пытался перейти и на первую, и на предъидущую запись, может не туда ставлю.


 
Anatoly Podgoretsky ©   (2009-04-15 16:32) [25]

> Alex34  (15.04.2009 15:57:24)  [24]

Скажи, что такое последнея для тебя запись?


 
Alex34 ©   (2009-04-15 16:37) [26]

Последняя в DBGridе.


 
clickmaker ©   (2009-04-15 16:54) [27]

> Последняя в DBGridе

последняя видимая или вообще последняя?

последняя в наборе данных - DataSet.Last


 
sniknik ©   (2009-04-15 18:45) [28]

> Последняя в DBGridе.
если записей больше чем влазит в DBGrid то последняя в нем <> последняя в DataSet-е.


 
Alex34 ©   (2009-04-16 08:14) [29]


> последняя видимая или вообще последняя?

Вообще последняя.


 
Anatoly Podgoretsky ©   (2009-04-16 09:34) [30]

> Alex34  (16.04.2009 8:14:29)  [29]

Тогда что такое "Вообще последняя."


 
sniknik ©   (2009-04-16 09:38) [31]

> Вообще последняя.
тема называется "Сортировка в DBGrid" т.е. данные на локальном рекордсете меняют порядок в зависимости от выбранной сортировки...
т.е. при обратной сортировке по автоинкременту (пример), последняя введенная будет стоять первой, а "Вообще последняя."  в рекордсете будет всегда самой старой записью с минимальных значением автоинкремента...

так куда ты хочешь переходить?


 
Alex34 ©   (2009-04-16 10:35) [32]


> так куда ты хочешь переходить

Перейти нужно на запись которая была введена последней, чтобы Edit редактировал её, а не создавал новую запись.


 
Jeer ©   (2009-04-16 11:17) [33]


> Alex34 ©   (16.04.09 10:35) [32]
Перейти нужно на запись которая была введена последней,


Ну и запомни ее идентификатор, затем Locate


 
sniknik ©   (2009-04-16 12:49) [34]

> Перейти нужно на запись которая была введена последней, чтобы Edit редактировал её, а не создавал новую запись.
при добавлении записи в датасет она становиться текущей. т.е. никуда переходить не надо.


 
Anatoly Podgoretsky ©   (2009-04-16 13:15) [35]

Он что-то нам не хочет говорить.


 
Alex34 ©   (2009-04-16 15:43) [36]

Я вам готов все рассказать, только это будет много текста.
Картина следующая. Форма1 в которой вносятся данные нового объявления, при выборе типа рекламодателя (например физическое лицо), вызывается Форма2 для внесения данных о рекламодателе, при открытие формы2 добовляю запись (Append), при закрываю формы2 сохраняю запись (Post) в таблице Контакт, далее в форме1 добавляю дату, стоимость сохраняю запись (Post)  в таблице Реклама. Дальше сомое интересное. Нужно ID таблицы Реклама записать в Idреклама таблицы Контакт. Я делаю следующим образом:
при нажатии конпки
DataModule1.KontDataSet.Edit;
DataModule1.KontDataSet.Post;
Вот вроде как-то так.


 
Alex34 ©   (2009-04-18 10:32) [37]

Ау. Есть кто живой?


 
topS   (2009-04-18 11:27) [38]

все подохли от вашего диплома


 
korneley ©   (2009-04-18 12:28) [39]


> Anatoly Podgoretsky ©   (16.04.09 09:34) [30]
> > Alex34  (16.04.2009 8:14:29)  [29]Тогда что такое "Вообще
> последняя."

Видимо: -3 наносекунды ("нано", это модно сейчас:) от падения головной части БР на объект (субъект?), диплом пишущий. :))) Хотя... И после этого сдавали...


 
Alex34 ©   (2009-04-21 13:32) [40]


> все подохли от вашего диплома

Вместо того чтобы хамить лучше бы помогли, то-же мне МАСТЕРА.


 
MsGuns ©   (2009-04-21 14:16) [41]

>Alex34 ©   (21.04.09 13:32) [40]
>Вместо того чтобы хамить лучше бы помогли, то-же мне МАСТЕРА.

Мастера все в ЖЭКах



Страницы: 1 2 вся ветка

Текущий архив: 2009.06.07;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.011 c
15-1238659736
SP
2009-04-02 12:08
2009.06.07
Route


15-1238736040
@!!ex
2009-04-03 09:20
2009.06.07
Как сделать счетчик скачивания файла?


15-1238873143
oxffff
2009-04-04 23:25
2009.06.07
Чем захватить Direct3d9?


11-1201454662
ntg13_
2008-01-27 20:24
2009.06.07
ищу редактор блок-схем на КОЛ


15-1238726241
Дмитрий С
2009-04-03 06:37
2009.06.07
Visual Studio Pro 2008 Russian