Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
14-1100589983
ИМХО
2004-11-16 10:26
2004.12.05
1986 год: честно ли Динамо Киев стало чемпионом СССР?


14-1100456731
ИМХО
2004-11-14 21:25
2004.12.05
Почему загнулся Netscape?


1-1100878506
PC
2004-11-19 18:35
2004.12.05
"Полный контроль"


3-1099652399
Janb
2004-11-05 13:59
2004.12.05
Что выбрать? Или как сделать?


9-1084546612
Omar2002
2004-05-14 18:56
2004.12.05
Статистическое предсказывание.