Здравствуйте.
Ребята, сегодня добавил вот такой запрос в проект.
var
{Заполняем таблицу tblSpisok_TH03 "Перечень компонентов ручного ввода"}
aQuery:string;
begin
aQuery := 'SELECT AR.AR_ARTICLE_ID AS AR_ARTICLE_ID '+
',AR.AR_NAME AS AR_NAME'+
',SUM(TMP.TDB_DOSINGWEIGHT) AS TDB_DOSINGWEIGHT'+
',CASE TMP.TDB_ACTIVE WHEN 1 THEN ''Добавлен'' ELSE '''' end AS ACTIVE '+
'FROM TMP_DOSINGBATCHES TMP '+
'INNER JOIN CFG_BATCHES BD ON BD.BD_PLC_BATCHNUMBER = TMP.TDB_PLC_BATCHNUMBER '+
'INNER JOIN CFG_RAWMATERIAL RM ON RM.RM_RAWMAT_ID = TMP.TDB_RAWMAT_ID '+
'INNER JOIN CFG_ARTICLE AR ON AR.AR_ARTICLE_ID = RM.RM_RAWMAT_ID '+
'WHERE BD_BATCHNUMBER = (SELECT MAX(BD_BATCHNUMBER) '+
'FROM CFG_BATCHES '+
'INNER JOIN TMP_DOSINGBATCHES ON TDB_PLC_BATCHNUMBER = BD_PLC_BATCHNUMBER '+
'INNER JOIN CFG_WEIGHER ON WG_WEIGHER_ID = TDB_WEIGHER_ID '+
'INNER JOIN CFG_UNITS ON UN_BATCHNUMBER = BD_BATCHNUMBER '+
'INNER JOIN CFG_UNIT_DEVICES ON UN_UNIT_ID = UDS_UNIT_ID AND WG_DEVICE_ID = UDS_DEVICE_ID '+
'AND UN_BATCHNUMBER > 1 '+
'AND TDB_WEIGHER_ID = 6) '+
'AND TMP.TDB_WEIGHER_ID = 6 '+
'AND TMP.TDB_MODIFYTYPE <> ''D'' '+
'GROUP BY TMP.TDB_PLC_BATCHNUMBER'+
',RTRIM(AR.AR_ARTICLECODE)'+
',AR.AR_NAME '+
',AR.AR_ARTICLE_ID '+
',TMP.TDB_WEIGHER_ID '+
',TMP.TDB_ACTIVE '+
'ORDER BY TMP.TDB_PLC_BATCHNUMBER, MIN(TDB_SEQUENCENUMBER) ';
tblSpisok_TH03.RunSQL(aQuery, tsSaveFixRow);
end.
Получается таблица похожая на эту:
+-------------------+---------------------+--------------------------+------------------+
| AR_ARTICLE_ID | AR_NAME | TDB_DOSINGWEIGHT | ACTIVE |
+-------------------+---------------------+--------------------------+------------------+
| 32 | Магния оксид | 24.2232 | Добавлен |
+-------------------+---------------------+--------------------------+------------------+
Но есть одно Но. Когда запрос выполняется в SQL, все проходит гладко и происходит подстановка
в колонку ACTIVE значения вместо 1 - 'Добавлен', а вместо 0 - пустую строку с помощью CASE.
Но если тот же запрос выполнять через клиент с автозаполнением таблицы, то в колонке ACTIVE всегда записывается 'Добавлен'