Форум: "Базы";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
ВнизSQL c Where - неправильный (?) номер текущей записи... Найти похожие ветки
← →
Apophis © (2004-11-06 00:35) [0]Мастера!
Подскажите, что я делаю неправильно?
Есть набор данных 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-06 00:48) [1]>Но если в процессе работы я меняю SQL на
Видимо что-то здесь некорректно...:)
← →
Apophis © (2004-11-06 00:53) [2]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 01:01) [3]Действительно, круто...
Попробуй после Open сделать Last-First.
← →
Apophis © (2004-11-06 01:18) [4]Попробовал, - НИФИГА!
И вообще, на последней записи из набора в 2 записи может показівать: Record 6 / 2.
Я ничего не понимаю! Но такое начинает происходить, когда используется УСЛОВИЕ при отборе. Когда тупо ВСЕ записи, все нормально.
So?....
← →
Johnmen © (2004-11-06 01:49) [5]Пипец...
:)
Абстрактные мысли:
1. Порушен индексный файл (если он есть)
2. Порушена таблица.
← →
Apophis © (2004-11-06 01:56) [6]Пипец^2!
Все целое.
← →
Johnmen © (2004-11-06 02:03) [7]Тогда ещё могу предположить, что глючит БДЕ (просто невероятно), или не всё договариваешь...:)
← →
Apophis © (2004-11-06 02:15) [8]Да ты скажи, чего еще нужно договорить?!?!?!:)))
← →
Johnmen © (2004-11-06 02:23) [9]Если б я знал...:)
Локально ли юзается парадокс?
Используется ли TDatabase?
Попробуй сделать начисто тестовый пример...
← →
Apophis © (2004-11-06 03:28) [10]1.Локально
2.Да
И вот чего я заметил. RecNo в наборе С УСЛОВИЕМ возвращает не номер записи в наборе, а ее номер в физической таблице! Это почему?
Таблица имеет первичный составной ключ: Autoincrement+Field1+Field2.
← →
Apophis © (2004-11-06 20:39) [11]Итак, корректирую первоначальный вопрос.
Как сделать, чтобы RecNo в наборе с условием выводил номер записи в соответствии именно с ЭТИМ набором, а не номер записи в физической таблице?
← →
Anatoly Podgoretsky © (2004-11-07 08:36) [12]Apophis © (06.11.04 20:39) [11]
Парадокс не поддерживает физические номера записей, только логические.
Номера записей в запросе зависят от движка.
← →
Apophis © (2004-11-07 15:29) [13]ОК, понятно. Спасибо, Anatoly Podgoretsky
← →
Johnmen © (2004-11-08 02:10) [14]>Anatoly Podgoretsky © (07.11.04 08:36) [12]
А я не понял...
Ведь у автора бардак именно в "логических" номерах НД.
И он говорит о нумерации именно НД !
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.034 c