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


Автор: Foley 4.4.2006, 22:20
Можно ли как-нибудь присвоить результат запроса значению таблички? Bот например я выбрал запросом запись

Код

dm.AQ_rab.Active:=false;
dm.AQ_rab.SQL.Clear;
dm.AQ_rab.SQL.Add('select *');
dm.AQ_rab.SQL.Add('from rabotniki');
dm.AQ_rab.SQL.Add('where FAM LIKE "'+edit1.Text+'%"');
dm.AQ_rab.Active:=true;


теперь мне надо чтобы результат можно было присвоить таблице


З.Ы. Почему при использовании ADO не проходит фильтрация, точнее с точным условием поиска находит, а вот иначе нет:
Код

dm.AT1.filter:='FIO='''+edit1.text+'''';

проходит, а
Код

dm.AT1.filter:='FIO='''+edit1.text+'*''';

не проходит, хотя при использовании BDE все работает нормально?

Автор: Grig 5.4.2006, 03:43
1. Наверное так. Потом работай с таблицей new_table. А вообще, лучше работать через вьюхи.
Код

dm.AQ_rab.Active:=false;
dm.AQ_rab.SQL.Clear;
dm.AQ_rab.SQL.Add('select *');
dm.AQ_rab.SQL.Add('into new_table');
dm.AQ_rab.SQL.Add('from rabotniki');
dm.AQ_rab.SQL.Add('where FAM LIKE "'+edit1.Text+'%"');
dm.AQ_rab.Active:=true;


На второй вопрос: Как понять не проходит? Не фильтруется или ошибку какую выдает?
Если что можно сделать с помощью запроса:
Код

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  var
  s:string ;
begin
AT1.Active:=false;
AT1.SQL.Clear;
s:='select * from my_table where FIO like '+''''+trim(edit1.text)+'%'+'''' ;
AT1.SQL.Add(s) ;
AT1.Active:=true;
end;



Автор: MakNik 5.4.2006, 11:37
Код

dm.AQ_rab.Active:=false;
dm.AQ_rab.SQL.Clear;
dm.AQ_rab.SQL.Add('IF EXISTS(SELECT * FROM new_table)');
dm.AQ_rab.SQL.Add('DROP TABLE dbo.new_table');
dm.AQ_rab.SQL.Add('select *');
dm.AQ_rab.SQL.Add('into new_table');
dm.AQ_rab.SQL.Add('from rabotniki');
dm.AQ_rab.SQL.Add('where FAM LIKE "'+edit1.Text+'%"');
dm.AQ_rab.SQL.Add('select * from new_table');
dm.AQ_rab.Active:=true;

Автор: Foley 5.4.2006, 22:31
Цитата(Grig @ 5.4.2006, 03:43 Найти цитируемый пост)
Как понять не проходит? Не фильтруется или ошибку какую выдает?

Grig, ошибки не выдает, а просто чистый ДБГрид (т.е. как будто заначения в базе не нашел)
как я понял надо создавать прмежуточную табличку и в нее копировать результат а потом уже из этой таблички копировать значение? Правильно понял?
Добавлено @ 22:33
точнее не копировать а передать результат в табличку new_table...

Автор: Foley 5.4.2006, 23:48
Забыл немного пояснить, AT1 - ADOtable
AQ_rab - ADOQuery

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