![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL c Where - неправильный (?) номер текущей записи... [D7, Paradox]
Apophis © (2004-11-06 00:35:00)Мастера!
Подскажите, что я делаю неправильно?
Есть набор данных Query1, DBGrid1. В Лабеле я вывожу номер текущей записи, примерно так:
Label1.Caption:= 'Record'+IntToStr(Query1.RecNo)+' / '+
IntToStr(Query1.RecordCount).
Так вот, если SQL строка 'select * from table' - все показывается в гриде правильно. Но если в процессе работы я меняю SQL на 'select * from table WHERE pole=1', то количество записей в наборе указывается приавильно, НО первая запись почему-то обзывается ВТОРОЙ (!), а последняя - кол-во записей в наборе ПЛЮС 1!!! То есть, RecNo=1 просто не существует!
Почему так и как сделать, чтобы все было по-человечески?
Агромное спасибо!
Johnmen (2004-11-08 02:10:00) [1]>Anatoly Podgoretsky © (07.11.04 08:36) [12]
А я не понял...
Ведь у автора бардак именно в "логических" номерах НД.
И он говорит о нумерации именно НД !
Apophis (2004-11-07 15:29:00) [2]ОК, понятно. Спасибо, Anatoly Podgoretsky
Anatoly Podgoretsky (2004-11-07 08:36:00) [3]Apophis © (06.11.04 20:39) [11]
Парадокс не поддерживает физические номера записей, только логические.
Номера записей в запросе зависят от движка.
Apophis (2004-11-06 20:39:00) [4]Итак, корректирую первоначальный вопрос.
Как сделать, чтобы RecNo в наборе с условием выводил номер записи в соответствии именно с ЭТИМ набором, а не номер записи в физической таблице?
Apophis (2004-11-06 03:28:00) [5]1.Локально
2.Да
И вот чего я заметил. RecNo в наборе С УСЛОВИЕМ возвращает не номер записи в наборе, а ее номер в физической таблице! Это почему?
Таблица имеет первичный составной ключ: Autoincrement+Field1+Field2.
Johnmen (2004-11-06 02:23:00) [6]Если б я знал...:)
Локально ли юзается парадокс?
Используется ли TDatabase?
Попробуй сделать начисто тестовый пример...
Apophis (2004-11-06 02:15:00) [7]Да ты скажи, чего еще нужно договорить?!?!?!:)))
Johnmen (2004-11-06 02:03:00) [8]Тогда ещё могу предположить, что глючит БДЕ (просто невероятно), или не всё договариваешь...:)
Apophis (2004-11-06 01:56:00) [9]Пипец^2!
Все целое.
Johnmen (2004-11-06 01:49:00) [10]Пипец...
:)
Абстрактные мысли:
1. Порушен индексный файл (если он есть)
2. Порушена таблица.
Apophis (2004-11-06 01:18:00) [11]Попробовал, - НИФИГА!
И вообще, на последней записи из набора в 2 записи может показівать: Record 6 / 2.
Я ничего не понимаю! Но такое начинает происходить, когда используется УСЛОВИЕ при отборе. Когда тупо ВСЕ записи, все нормально.
So?....
Johnmen (2004-11-06 01:01:00) [12]Действительно, круто...
Попробуй после Open сделать Last-First.
Apophis (2004-11-06 00:53:00) [13]Johnmen
ОК. Пишу так в процессе:
....................
With Query1 do begin
Close;
SQL.Clear;
SQL.Add('select * from table where pole=1');
Open;
end;
Label1.Caption:= 'Record'+IntToStr(Query1.RecNo)+' / '+
IntToStr(Query1.RecordCount)
...................
Набор открывается (пусть 4 записи),курсор в гриде на первой строке (как и положено), но Лабеле: Record 2 / 4. Становлюсь на последнюю запись: Record 5 / 4.
Круто?
Так в чем проблема? Что еще уточнить?
Johnmen (2004-11-06 00:48:00) [14]>Но если в процессе работы я меняю SQL на
Видимо что-то здесь некорректно...:)