Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Обновление формы


Автор: IILYFKA 9.2.2006, 16:48
У меня в проекте после фильтрации в DBText'е все равно отображаются старые записи, пока по гриду не щелкнешь. Refresh не помогает... smile

Автор: McDevil 12.2.2006, 12:03
Попробуй очищать... Или делай свое обновление... А вообще раскажи поподробнее...

Автор: Foley 12.2.2006, 23:44
Цитата(McDevil @ 12.2.2006, 12:03 Найти цитируемый пост)
Попробуй очищать

это че каждому дбэдиту присваивать:
DBText.Text:='';?

Цитата(McDevil @ 12.2.2006, 12:03 Найти цитируемый пост)
Или делай свое обновление

как свою процедурку накидать?

Вопщем дело так: есть кнопка "Вперед", на ней прописано примерно следующее
Table1.next;
table2.filter:='SS='''+table1Ripan.value+'''';
Form1.refresh;
а DBTextov у меня море...
Добавлено @ 23:45
А обновляется после того как щелкнешь по дбгриду (чтоб он для редактирования открылся).

Автор: sexton 13.2.2006, 10:45
Form1.refresh ни при чем!!!!
попробуй refresh Dataset'a!

Автор: McDevil 14.2.2006, 09:30
Цитата(Foley @ 12.2.2006, 23:44 Найти цитируемый пост)
это че каждому дбэдиту присваивать:
DBText.Text:='';?

Можно циклом не надо каждому приравнивать !!!


Цитата(Foley @ 12.2.2006, 23:44 Найти цитируемый пост)
Или делай свое обновление


как свою процедурку накидать?

Вопщем дело так: есть кнопка "Вперед", на ней прописано примерно следующее
Table1.next;
table2.filter:='SS='''+table1Ripan.value+'''';
Form1.refresh;
а DBTextov у меня море...
Добавлено @ 23:45
А обновляется после того как щелкнешь по дбгриду (чтоб он для редактирования открылся).

Я вообще не знаю как он базу делает... Лично я использую ADO и mdb-е базы и применительно для меня можно так обновлять:
Код

procedure RefreshDataSet(const boolActive: Boolean);
var
  intIndex: Integer;
begin
  with DM do begin
     for intIndex := 0 to ComponentCount - 1 do begin
      if Components[intIndex] is TADOTable then begin
        (Components[intIndex] as TADOTable).Active := boolActive;
      end;
      if Components[intIndex] is TADOQuery then begin
        (Components[intIndex] as TADOQuery).Active := boolActive;
      end;
    end;
  end;
end;

Автор: DDX 14.2.2006, 14:45
что ? :-)
делай просто
table1.filtered:=False;
table1.Filter:=.....;
table1.Filtered:=True;

и усе..а дэбээдиты все сами покажут, а значение ты им не присвоишь

Автор: McDevil 14.2.2006, 17:29
Цитата(DDX @ 14.2.2006, 14:45 Найти цитируемый пост)
и усе..а дэбээдиты все сами покажут, а значение ты им не присвоишь

не спорю я вообще не понял как такой глюк в принципе может быть

Автор: Foley 15.2.2006, 00:22
Спавибо всем (использовал я таблицы Парадокс, драйвер БДЕ) (кстати с эдитами проблем не было просто с DBText компонентами проблема была). (незнаю есть ли между ними разница (кроме той что в эдите можно ред-ть а в дбтексте нельзя))...
Добавлено @ 00:26
Кстати пользуясь случаем хочу спросить:
table.filtered:=false;
table.filter:=...
table.filtered:=true;

чем отличается от:
table.filtered:=true;
table.filter:=...

буду благодарен за справку...(программа тупее (дольше) работает или это связано с чем-то другим?)
просто я видел как пишут второй вариант и стал так писать... (я самоучка(что понял то реализовал))

Автор: DDX 15.2.2006, 14:03
Цитата(Foley @ 15.2.2006, 00:22 Найти цитируемый пост)
Кстати пользуясь случаем хочу спросить:
table.filtered:=false;
table.filter:=...
table.filtered:=true;

чем отличается от:
table.filtered:=true;
table.filter:=...


I. по мне, так логичнее
1. отключаешь фильтрацию
2. задаешь условие фильтра
3. если фильтр верен, применяешь фильтрацию

II. Ты:
1. Включаешь фильтрацию (фильтр при этом неизвестно какой), если он неверен, например, пустой, то вывалится исключение
2. Заполняешь условие фильтра

а работает и так, и так

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)