Форум: "Начинающим";
Текущий архив: 2009.06.07;
Скачать: [xml.tar.bz2];
ВнизСортировка в 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]
> все подохли от вашего диплома
Вместо того чтобы хамить лучше бы помогли, то-же мне МАСТЕРА.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.06.07;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.008 c