Страница 1 из 1
Как поставить курсор?
Добавлено: 26 июл 2006, 15:06
avenger
Здравствуйте.
Как поставить курсор после TIBSQL.ExecQuery на последнюю запись?
А потом перемещать его вверх?
С уважением, Иван.
Добавлено: 26 июл 2006, 15:26
CyberMax
Никак. Этот компонент не буферизирует записи.
Добавлено: 26 июл 2006, 15:48
avenger
CyberMax писал(а):Никак. Этот компонент не буферизирует записи.
Тогда можно как нибудь вывести 10 последних записей, отсортированных в обратном порядке?
Т.е.
Код: Выделить всё
SELECT FIRST 10
U.USERID, U.FIO, U.ISVIP, M.*,
RU.USERID AS REPLY_USERID, RU.FIO AS REPLY_FIO, RM.DATETIME AS REPLY_DATETIME, RM."MESSAGE" AS REPLY_MESSAGE
FROM MESSAGES M
JOIN USERS U ON U.USERID = M.USERFK AND M.MESSAGEID <= 5000 AND M.CHANNELFK = 14
LEFT OUTER JOIN MESSAGES RM ON M.REPLYMID = RM.MESSAGEID
LEFT OUTER JOIN USERS RU ON RU.USERID = RM.USERFK
ORDER BY M.DATETIME DESC
Если выполнить этот запрос, то сортировка будет не та, а записи те.
Добавлено: 26 июл 2006, 15:59
Merlin
Варианты.
1. Пересортировать на клиенте. Выборка маленькая, нефиг делать. Кстати, ClientDataSet это чудненько умеет делать, если самому влом.
2. Впендюрить оный запрос в СП и тянуть из неё с нужным ордер бу.
3. Аналогично со вьюхой (наверное, я с ними не работаю)
4. Аналогично с select from select в FB2.
Добавлено: 26 июл 2006, 16:04
CyberMax
А зачем тебе так извращаться-то? Загрузил бы записи в TIBDataSet да крутил бы их так, как тебе хочется...
В любом случае, Merlin уже огласил возможные варианты решения.
Добавлено: 26 июл 2006, 16:06
avenger
Merlin писал(а):Варианты.
А так изврат?
Код: Выделить всё
SELECT
U.USERID,
U.FIO,
U.ISVIP,
M.*,
RU.USERID AS REPLY_USERID,
RU.FIO AS REPLY_FIO,
RM.DATETIME AS REPLY_DATETIME,
RM."MESSAGE" AS REPLY_MESSAGE
FROM
MESSAGES M
JOIN USERS U ON U.USERID = M.USERFK
AND M.CHANNELFK = 14
AND M.MESSAGEID <= 5000
AND /* Вот ЭТО */
M.MESSAGEID >= (
SELECT FIRST 1 SKIP 10
M.MESSAGEID
FROM
MESSAGES M
WHERE
M.MESSAGEID <= 5000 AND M.CHANNELFK = 14
ORDER BY M.DATETIME DESC
)
/* end Вот ЭТО */
LEFT OUTER JOIN MESSAGES RM ON M.REPLYMID = RM.MESSAGEID
LEFT OUTER JOIN USERS RU ON RU.USERID = RM.USERFK
ORDER BY
M.DATETIME
[Модератор: немного отформатировал запрос, чтобы легче читался]
Добавлено: 26 июл 2006, 16:09
avenger
CyberMax писал(а):Загрузил бы записи в TIBDataSet да крутил бы их так, как тебе хочется...
Да компонент этот уж очень "громоздкий"... Select выполняется 1-н раз, вот и хочется как проще. Хочется IBSQL обойтись...