Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2013, 17:07   #1
undead92
Пользователь
 
Регистрация: 26.12.2009
Сообщений: 95
По умолчанию редактирование dbgrid

народ, нашел отличное решение проблемы.
у меня есть dbgrid,dbedit . благодаря ним добавить, изменить и удалить стало не проблема. НО, если я хочу чтобы в гриде отображались только записи у которых например тип = 2 то приходилось это делать запросом и выводить в грид его, ПОСЛЕ ЧЕГО редактировать становиться невозможно, так как запрос не может передать значение в dbedit

решение нашлось компонентом MyDac.

у mytable есть свойство filter, и filtered

в таблице есть авто и мотоциклы, нам нужно отобразить только авто, и чтобы можно было редактировать. для этого на кнопку сортировать по авто вешаем
mytable1.filter='tip=auto';
mytable1.filtered:=true;

все при нажатии в гриде будут только авто причем спокойно редактируемое, в dbedit отображаемое.

таким образом можно навешать сколько угодно фильтров избежав SQL , а на кнопку показать все вешаем только mytable1.filtered:=false;

до этого ни нашел не одного решения сей проблемы
undead92 вне форума Ответить с цитированием
Старый 25.10.2013, 17:29   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну допустим в ADOTable, и не только, такую же точно фильтровку тоже ни кто не отменил. А в общем случае на Table и их клонах достаточно серьезного ничего не сделаешь. Разве что на уровне студенческих курсовых
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.10.2013 в 17:32.
Аватар вне форума Ответить с цитированием
Старый 25.10.2013, 17:31   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

и что? проблема то в чем?
eval вне форума Ответить с цитированием
Старый 25.10.2013, 18:06   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
так как запрос не может передать значение в dbedit
Может.
Цитата:
таким образом можно навешать сколько угодно фильтров избежав SQL
Ошибаешься.
Цитата:
до этого ни нашел не одного решения сей проблемы
Какой именно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2013, 09:06   #5
undead92
Пользователь
 
Регистрация: 26.12.2009
Сообщений: 95
По умолчанию

господа умники, когда я искал сей решение тут, создав ни одну тему, все писали это невозможно бла бла. Хорошо скиньте пример, который проще и без компонентов. по щелчку на строку, запись должна найтись в таблице - и отобразиться в dbedit.

Stilet - какой из фильтров я не применю? посути я пишу тот же sql запрос, только в самом компоненте таблица, что дает программе понимать к какой строке я обращаюсь, без всяких там update

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну допустим в ADOTable, и не только, такую же точно фильтровку тоже ни кто не отменил. А в общем случае на Table и их клонах достаточно серьезного ничего не сделаешь. Разве что на уровне студенческих курсовых
а что, в Рашке кроме 1с серьезные программы есть?а на делфи есть?

Последний раз редактировалось Stilet; 28.10.2013 в 12:15.
undead92 вне форума Ответить с цитированием
Старый 28.10.2013, 09:17   #6
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 638
По умолчанию

Компоненты типа MyDac, UniDac прячут sql внутри, и у "разработчика" складывается
ошибочное ощущение, что он их избегает.

Цитата:
Сообщение от undead92 Посмотреть сообщение
а что, в Рашке кроме 1с серьезные программы есть?а на делфи есть?
Полно, только мало кто из начинающих с ними сталкивается,
потому что они серьезные, а не "ширпотреб".
** Удача терпелива. **
Vad3333@inbox.ru

Последний раз редактировалось Stilet; 28.10.2013 в 12:17.
Vad33 вне форума Ответить с цитированием
Старый 28.10.2013, 12:22   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
какой из фильтров я не применю?
Я говорю о том что не все возможности SQL можно использовать в фильтре, сам натыкался на подобные ограничения.
Цитата:
посути я пишу тот же sql запрос
Если на 100% уверен - да. Но это обманка.
Цитата:
Хорошо скиньте пример, который проще и без компонентов. по щелчку на строку, запись должна найтись в таблице - и отобразиться в dbedit.
По щелчку на что? Какие критерии поиска? Я делаю всегда примерно в таком ключе:
Код:
With ADOQuery do begin
 sql.text:='select... where условие';
 Open;
 if not eof then Edit.Text:=Fields[0].AsString else ченить сообщить оператору
 close;
end;
это гораздо надежнее свойств фильтра компонентов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2013, 09:26   #8
undead92
Пользователь
 
Регистрация: 26.12.2009
Сообщений: 95
По умолчанию

можно подробнее с примером? табилца выводиться в дбгрид. щелчок по строчке в этом дбгрид и открывается форма, где вся строка вбита в dbedit и можно отредактировать. Единственное условие, что к dbgrid подключается не таблица, а в него выводится результат sql запроса.спасибо
undead92 вне форума Ответить с цитированием
Старый 30.10.2013, 09:57   #9
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

Цитата:
Сообщение от undead92 Посмотреть сообщение
народ, нашел отличное решение проблемы.
у меня есть dbgrid,dbedit . благодаря ним добавить, изменить и удалить стало не проблема. НО, если я хочу чтобы в гриде отображались только записи у которых например тип = 2 то приходилось это делать запросом и выводить в грид его, ПОСЛЕ ЧЕГО редактировать становиться невозможно, так как запрос не может передать значение в dbedit
Я уже отвечал на вопрос по компонентам DAC. Не знаю, пошел ли мой ответ на пользу.

Данный вопрос понял не до конца.

Если часть запроса должна быть вариантной, то есть или присутствовать в запросе, или нет, в компонентах DAC есть метод AddWhere, позволяющий программно добавить нужные части перед отправкой запроса на сервер, исходный текст запроса при этом не меняется.

Если же запрос синтаксически одинаков, а меняется лишь значение параметра, нужно использовать обычные параметры, как в ADO, dbExpress и пр.
Vapaamies вне форума Ответить с цитированием
Старый 30.10.2013, 11:03   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вся строка вбита в dbedit и можно отредактировать.
Ну наверное просто в DataSource ДБЭдита укажи датасет для твоего ADOQuery, эдит должен сам подтянуть данные.
А по поводу открытия формы опиши событие клика для Грида в котором будет эта форма показываться. Код не дам, потому что Делфи нет у меня.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование данных в DBGrid II_Dimit_II БД в Delphi 2 28.05.2013 09:43
Редактирование текущей записи Dbgrid -=pasha=- Общие вопросы Delphi 9 19.02.2013 03:16
Редактирование поля в DBGrid. Ol'K@ БД в Delphi 8 03.02.2013 15:18
Редактирование и сохранение excel из dbgrid Q012 БД в Delphi 5 22.08.2012 21:24
Запретить редактирование в DBGrid MixanMM БД в Delphi 12 10.05.2010 20:28