Та не, там вроде все нормально...
в
Код:
procedure ApplySortingForSQLBasedDataSet(Grid: TCustomDBGridEh; DataSet: TDataSet;
UseFieldName: Boolean; IsReopen: Boolean; const SQLPropName: String);
....
SetDataSetSQLLikeProp(DataSet, SQLPropName, WideString(SQL.Text));
...
во время отладки
в "
SQL.Text"
Код:
'EXECUTE BLOCK RETURNS (ID integer, NAME varchar(400), "TYPE" varchar(40), NUMBER varchar(25), NEMBER_INVENTORY varchar(10), PRODUCER varchar(200), YEAR_BEGIN integer, CALIBRATION_INTERVAL integer, NAME_TEST varchar(300), REMARK varchar(2000), USER_ID integer, DEPARTMENT_ID integer, TIME_EDIT timestamp, ARCHIVE integer, SPECIFICATION varchar(2000), DEVICE_DEPARTMENT_ID integer, TYPE_SERIES integer, DISLOCATION varchar(50), TYPE_EQUIP integer, PASSPORT integer, HOST_LABORATORY integer, NAME_SHORT_LAB varchar(20), NUMBER_CERT varchar(25), LAST_DATE date, HOST_USER varchar(30), COUNT_CERT integer) AS declare variable ID_EQUIP integer; declare variable LAB_ID integer; declare variable CALIBR_INT integer; declare procedure RECIEVE_LAB(LAB_ID integer) RETURNS(ID integer, NAME_SHORT_LAB varchar(20)) as begin for execute statement '' SELECT ID, NAME_SHORT FROM LABORATORY where ID = ''||LAB_ID on external ''D:\Database\Plan.fdb'' AS USER ''SYSDBA'' PASSWORD ''masterkey'' into :ID, :NAME_SHORT_LAB do suspend; end declare procedure LAST_CERT(ID_EQUIP integer, CALIBR_INT integer) returns(NUMBER_CERT varchar(25), LAST_DATE date, DEVICE_ID_CL integer) as begin for execute statement ''SELECT ce.NUMBER_CERT, ce.DATE_OUT, ce.DEVICE_ID_CL FROM CERTIFICATE ce left join CERTIFICATE b on ce.DEVICE_ID_CL = b.DEVICE_ID_CL and ce.DATE_OUT < b.DATE_OUT where b.DEVICE_ID_CL is NULL and ce.DEVICE_ID_CL in (''||ID_EQUIP||'')'' on external ''192.168.0.222:D:\Database\Plan.fdb'' AS USER ''SYSDBA'' PASSWORD ''masterkey'' into :NUMBER_CERT, :LAST_DATE, :DEVICE_ID_CL do suspend; end begin for select eq.ID, eq.HOST_LABORATORY, eq.CALIBRATION_INTERVAL from EQUIPMENT eq where ARCHIVE in (1) and PASSPORT = 1 '#$D#$A#$D#$A#$D#$A'ORDER BY 3 DESC'#$D#$A'into :ID_EQUIP, :LAB_ID, :CALIBR_INT do for select eq.ID, eq.NAME, eq."TYPE", eq.NUMBER, eq.NEMBER_INVENTORY, eq.PRODUCER, eq.YEAR_BEGIN, eq.CALIBRATION_INTERVAL, eq.NAME_TEST, eq.REMARK, eq.USER_ID, eq.DEPARTMENT_ID, eq.TIME_EDIT, eq.ARCHIVE, eq.SPECIFICATION, eq.DEVICE_DEPARTMENT_ID, eq.TYPE_SERIES, eq.DISLOCATION, eq.TYPE_EQUIP, eq.PASSPORT, eq.HOST_LABORATORY, eq.HOST_USER, eq.COUNT_CERT, rl.NAME_SHORT_LAB, (case when lc.NUMBER_CERT = ''-1'' then '''' else lc.NUMBER_CERT end), lc.LAST_DATE from EQUIPMENT eq left join RECIEVE_LAB(:LAB_ID) rl on rl.id = eq.HOST_LABORATORY left join LAST_CERT(:ID_EQUIP, :CALIBR_INT) lc on lc.DEVICE_ID_CL = eq.ID where eq.ID = :ID_EQUIP into ID, NAME, "TYPE", NUMBER, NEMBER_INVENTORY, PRODUCER, YEAR_BEGIN, CALIBRATION_INTERVAL, NAME_TEST, REMARK, USER_ID, DEPARTMENT_ID, TIME_EDIT, ARCHIVE, SPECIFICATION, DEVICE_DEPARTMENT_ID, TYPE_SERIES, DISLOCATION, TYPE_EQUIP, PASSPORT, HOST_LABORATORY, HOST_USER, COUNT_CERT, NAME_SHORT_LAB, NUMBER_CERT, LAST_DATE do suspend; END'#$D#$A#$D#$A#$D#$A#$D#$A
я вижу, что в предложении сортировки стоит
Код:
...ORDER BY 3 DESC...