В прошлый раз я сочинял сложноватый SQL запрос, в итоге получился такой код:
- Код: Выделить всё
- DM1.TMSelected.SQL.Add('SELECT DISTINCT trademarks.Number, CASE trademarks.IsJurholder');
 DM1.TMSelected.SQL.Add('WHEN 1 THEN (SELECT Shortname FROM investpatents.jurlica WHERE ID=HolderID)');
 DM1.TMSelected.SQL.Add('WHEN 0 THEN (SELECT CONCAT(Familia,'' '',LEFT(Name,1),''.'',LEFT(Otchestvo,1),''.'') FROM investpatents.fizlica WHERE ID=HolderID)');
 DM1.TMSelected.SQL.Add('WHERE trademarks.ID IN ('+ID+')');
 DM1.TMSelected.Open;
где в ID строка, в которой формируется перечень номеров, выбранных пользователем.
Этот код отлично работает.
Однако, тот же SQL запрос, перенесенный в файл с параметром вместо ручного добавления ID при форматировании строки, работает криво - а именно возвращает лишь только одну первую строку из выбранного набора.
не могу понять причину.
- Код: Выделить всё
- DM1.TMSelected.SQL.LoadFromFile('TMselect.sql');
 DM1.TMSelected.ParamByName('IDlist').AsString:=ID;
 DM1.TMSelected.Open;
Текст SQL запроса тот же самый:
- Код: Выделить всё
- SELECT DISTINCT trademarks.Number, CASE trademarks.IsJurholder
 WHEN 1 THEN
 (SELECT Shortname FROM investpatents.jurlica WHERE ID=HolderID)
 WHEN 0 THEN
 (SELECT CONCAT(Familia,' ',LEFT(Name,1),'.',LEFT(Otchestvo,1),'.') FROM investpatents.fizlica WHERE ID=HolderID)
 END AS Shortname
 FROM investpatents.trademarks, investpatents.jurlica, investpatents.fizlica
 WHERE trademarks.ID IN (:IDlist);
Добавлено спустя 51 минуту 8 секунд:
SQL запрос в консоле mysql работает правильно. Видимо проблема в момент отработки DM1.TMSelected.ParamByName('IDlist').AsString:=ID случается.
Но что там может быть-то???


