В прошлый раз я сочинял сложноватый 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 случается.
Но что там может быть-то???