Главная страница
    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.47 MB
Время: 0.036 c
14-1100235248
ИМХО
2004-11-12 07:54
2004.12.05
Ниггериец в составе сборной Украины?


1-1101197715
Max Ivanych
2004-11-23 11:15
2004.12.05
Как изменить цвет шрифта в StringGrid?


6-1096456036
vasechka
2004-09-29 15:07
2004.12.05
Пауза в потоках


1-1100701652
Zloy
2004-11-17 17:27
2004.12.05
Как создать цикл, который изменит настройки нескольких компонент


4-1098088573
DelphiLexx
2004-10-18 12:36
2004.12.05
RegisterServiceProcess





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский