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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2015, 13:30   #11
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

уууу, чето совсем я не понимаю. может мой код подправите?
Scorpuha вне форума Ответить с цитированием
Старый 30.09.2015, 13:55   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не пойму при каких делах INSERT или UPDATE если тема о фильтровке? Или она резко о другом стала?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.09.2015, 14:01   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
with LoadF.ADOQuery1 do begin 
 SQL.Clear;
 add('update таблица set tabnum=rabotniki.tabnum,familiya=rabotniki.familiya from ')
 Add('(SELECT rabotniki.id, rabotniki.tabnum, rabotniki.familiya, rabotniki.imya, rabotniki.otchestvo, rabotniki.dolzhnost_id,');
 add('dolzhnosti.gruppa, dolzhnosti_napryazh.napryazh');
 add('FROM sluzhby INNER JOIN ((dolzhnosti_personal INNER JOIN (dolzhnosti_napryazh INNER JOIN dolzhnosti ');
 add('ON dolzhnosti_napryazh.id_napryazh = dolzhnosti.id_napryazh) ON dolzhnosti_personal.id_personal = dolzhnosti.id_personal)');
  add(' INNER JOIN rabotniki ON dolzhnosti.dolzhnost_id = rabotniki.dolzhnost_id) ON sluzhby.sluzhba_id = rabotniki.sluzhba_id)');
 exec;
end;
Вот что я имел ввиду.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2015, 14:13   #14
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не пойму при каких делах INSERT или UPDATE если тема о фильтровке? Или она резко о другом стала?
тема да, о фильтре стрингрид`а, но мне еще нужно и фильтр dbgrid`a, у меня есть мысли и наработки как фильтровать dbgrid, а вот как его заполнить запросом из двух таблиц мыслей нету
Scorpuha вне форума Ответить с цитированием
Старый 30.09.2015, 14:16   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но мне еще нужно и фильтр dbgrid`a
Ужс...
А это:
Цитата:
WorkerF.DBGrid2.DataSource.DataSet. Fields[0].AsString:=LoadF.ADOQuery1.FieldByN ame('tabnum').AsString;
WorkerF.DBGrid2.DataSource.DataSet. Fields[1].AsString:=LoadF.ADOQuery1.FieldByN ame('familiya').AsString;
WorkerF.DBGrid2.DataSource.DataSet. Fields[2].AsString:=LoadF.ADOQuery1.FieldByN ame('gruppa').AsString;
по твоему способ фильтрации?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2015, 14:23   #16
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

нет, это не способ фильтрации, а способ заполнения DBGrid
Scorpuha вне форума Ответить с цитированием
Старый 30.09.2015, 14:31   #17
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

У TC есть исходный набор данных (ADOQuery)
Он хочет его показывать в виде таблицы. Желательно DBgrid. DBGrid "отказывается" работать с ADOQuery.
и далее попытка как-то скопировать данные куда-то (в DBGrid а-ля StringGrid).

Делаем связку
DBgrid -> DataSource -> ClientDataSet -> DataSetProvider -> ADOQuery
Код:
ClientDataSet1.ProviderName = DataSetProvider1
DataSetProvider1.DataSet = ADOQuery1
после этого можно считать DBGrid заполненым.


SQL как и раньше пишем в ADOQuery (хотя можно написать и ClientDataSet), а вот все действия(открыть/закрыть/отфильтровать на клиенте) производим на ClientDataSet.

Код:
ADOQuery1.SQL.Text:='select ...'; 
ClientDataSet1.Active:=true;

ClientDataSet.Filter:='поле ='+Edit1.Text';
clientDataSet.filtered:=true;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 30.09.2015 в 14:37.
evg_m вне форума Ответить с цитированием
Старый 30.09.2015, 14:43   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

У-у, уже элементы трехзвенки для фильтрации ТС на голову. У него как у Страшилы мудрого сейчас мозги видны станут

1. DBGrid не заполняется так, как StringGrid. Он отображает данные из датасета.
2. Фильтр устанавливается или в запросе, используя WHERE
3. Или на датасете, используя Filter и/или OnFilterRecord и Filtered. Это свойства/методы датасета
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.09.2015, 14:46   #19
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
У TC есть исходный набор данных (ADOQuery)
Он хочет его показывать в виде таблицы. Желательно DBgrid. DBGrid "отказывается" работать с ADOQuery.
и далее попытка как-то скопировать данные куда-то (в DBGrid а-ля StringGrid).
да да вот именно такая ситуация

Цитата:
Сообщение от evg_m Посмотреть сообщение
Делаем связку
DBgrid -> DataSource -> ClientDataSet -> DataSetProvider -> ADOQuery
Код:
ClientDataSet1.ProviderName = DataSetProvider1
DataSetProvider1.DataSet = ADOQuery1
после этого можно считать DBGrid заполненым.
компоненты закинул, прописал все требуемые свойства

Цитата:
Сообщение от evg_m Посмотреть сообщение
SQL как и раньше пишем в ADOQuery (хотя можно написать и ClientDataSet), а вот все действия(открыть/закрыть/отфильтровать на клиенте) производим на ClientDataSet.

Код:
ADOQuery1.SQL.Text:='select ...'; 
ClientDataSet1.Active:=true;

ClientDataSet.Filter:='поле ='+Edit1.Text';
clientDataSet.filtered:=true;
а вот куда это писать?

Цитата:
Сообщение от Аватар Посмотреть сообщение
У-у, уже элементы трехзвенки для фильтрации ТС на голову. У него как у Страшилы мудрого сейчас мозги видны станут

1. DBGrid не заполняется так, как StringGrid. Он отображает данные из датасета.
Вот моя задача, заполнить DBGrid данными из запроса.

Цитата:
Сообщение от Аватар Посмотреть сообщение
У него как у Страшилы мудрого сейчас мозги видны станут
Угу и так уже дымятся

Последний раз редактировалось Stilet; 30.09.2015 в 14:50.
Scorpuha вне форума Ответить с цитированием
Старый 30.09.2015, 14:49   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Вот моя задача, заполнить DBGrid данными из запроса.
Элементарно Ватсон. DataSource нацеливаешь на ADOQuery. DBGrid на DataSource. Выполняешь запрос и твоя задача выполнена
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с компонентом SringGrid (Delphi) McSullivan Помощь студентам 4 10.11.2012 23:11
Фильтр leno4ka_09 Microsoft Office Excel 2 13.05.2010 14:39
Фильтр БД Ma4balaka БД в Delphi 3 12.05.2010 12:15
Фильтр Машенька Microsoft Office Access 1 16.12.2009 20:27