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


Автор: _hunter 20.12.2005, 12:51
добрый день.

можно ли как-то сделать чтобы параметром передадь массив?
т.е.
если у меня запрос вида
Код

SELECT * FROM Table WHERE ( id IN (1, 2, 3) )

можно ли как-то сделать чтобы работал такой:
Код

SELECT * FROM Table WHERE ( id IN :param )

запрос?

работаю с InterBase-ом ( TIBSQL )

Автор: SPrograMMer 21.12.2005, 00:38
никак. не мучайся.... можно только попоробовать текст всего запроса переписывать.... Список ID-ек формировать в текстовой строке, ну что то вроде:
Код

S:='';
For I:=1 To 10 Do
 S:=S+IntToStr(I)+',';
Delete(S,Length(S),1);
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('SELECT * FROM Table WHERE ( id IN ('+S+'))');
...

Автор: FRAGNATIC 21.12.2005, 01:02
_hunter
я помучался в своё время и всётаки сделал так как грит
SPrograMMer
Код

var
  Work: array of integer;
  SQL: string;
---------------------------
procedure TransWork;
var
  tmp: string;
  i: integer;
begin
  tmp:=IntToStr(Work[Low(work)]);
  for i:=Low(work)+1 to High(work) do
  begin
    tmp:=tmp+','+IntToStr(Work[i]);
  end;
  if SQL='' then
  SQL:=SQL+tmp
  else SQL:=SQL+','+tmp;
end;

в итоге в SQL все эленты =)

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