Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Присвоение значения IbQuery.RecNo [D6]


Страницы:   1 2

DelphiN! ©   (2005-02-22 07:33:00) 

Пишу Query.RecNo := 2;, а присваивается 5 ! Вот код :
 
 i := 1;
 b := false;
 f := SEANSES.Filter;
 r := SEANSES.RecNo;
 SEANSES.Filter := '';
 Result.IP := '';
 while (i <= Seanses.RecordCount) and (not b) do
 begin
    Seanses.RecNo := i; //Вот тут RecNo почемуто всегда равен 5, хотя RecordCount = 2, а значение возвращаемое Seanses.FieldByName('COMP_').AsString = 1-ой строке ! Переменная i же изменяется правильно (сначало 1, потом 2)
   
if Seanses.FieldByName('COMP_').AsString = IP then
   begin
      ...


Почему ? Как это исправить ?


DelphiN!   (2005-02-23 10:34:00) [1]

Поставил компонент TIBDataSet вместо TIBQuery и проблемм нестало !

Можно еще вопрос, каким способом мне определять колличество записей текущей выборки(сколько записей отображается сейчас в DBGrid-е) ?


Anatoly Podgoretsky   (2005-02-22 13:20:00) [2]

Johnmen ©   (22.02.05 10:01) [14]
Помнится ты это ему уже говорил, давно, стоит ли повторяться?


Danilka   (2005-02-22 12:55:00) [3]

[21] Johnmen ©   (22.02.05 11:40)
пасиба :)
по-русски тоже есть подобное, просто слов больше в два раза. :)


Johnmen   (2005-02-22 11:40:00) [4]

>Danilka ©   (22.02.05 11:29) [20]
>А по-русски можно? А то не понятно, кто там чего ест. :))

Торопливость задерживает

или, как говорил тов.Саахов, торопиться не надо...
:)


Danilka   (2005-02-22 11:29:00) [5]


> Festinatio tarda est!

А по-русски можно? А то не понятно, кто там чего ест. :))

DelphiN!
Не гоже работать с клиент-сервером файл-серверными методами. Хотя, ты даже так с ними не работаешь, а пытаешься работать через задний проход и потом кричишь что все глючит. 1. для поиска в наборе данных служит locate, о чем тебе уже говорили в этой ветке. 2. recordcount в определенных случаях вернет -1. 3. Если книжки читать религия не позволяет, посвяти праздничный день изучению хелпа и примеров дельфи.


DelphiN!   (2005-02-22 11:11:00) [6]

Де не уж, спасибо :)


Sergey13   (2005-02-22 10:59:00) [7]

2 [17] DelphiN! ©   (22.02.05 10:53)
>похоже я тут не один глючу :)
Еще от глюков помогает Format c: и переустановка ОС.


DelphiN!   (2005-02-22 10:53:00) [8]

При попытки удаления в IbExpert-e приоисходил ошибка в ждущей транзикции, после перезапуска ФБ сервера все заработало, похоже я тут не один глючу :)


DelphiN!   (2005-02-22 10:47:00) [9]

У меня опять проблемма :

 System.SQL.Text := 'DELETE FROM SEANSES WHERE COMP_ = '''+IP+'''';
 System.ExecSQL;  //Тут программа намертво зависает без вывода каких либо сообщений об ошибках

Если делать :
SEANSES.Delete; то происходит тоже самое


DelphiN!   (2005-02-22 10:41:00) [10]


> RecordCount


А что использовать для определения колличества записей ?


Johnmen   (2005-02-22 10:01:00) [11]

>DelphiN! ©

Никогда, ни при каких обстоятельствах НЕ ИСПОЛЬЗУЙ  RecnNo и RecordCount !
Это мой последний пост для тебя. Учи матчасть.

Festinatio tarda est!


DelphiN!   (2005-02-22 09:46:00) [12]


> [11] ЮЮ ©   (22.02.05 09:39)
>
> Потому, навеорное, и незаметно, что перехода на новую запись
> нет :)


Нет, переход есть(только в IB через раз). С Парадоксом вообще проблемм небыло


DelphiN!   (2005-02-22 09:39:00) [13]

Действительно через Next-ы не глючит, а почему тогда через RecNo глючило ? Я ведь FeetchAll делал


ЮЮ   (2005-02-22 09:39:00) [14]

>Когда через RecNo переключать, это визуально незаметно в гриде, а через Next ... заметно

Потому, навеорное, и незаметно, что перехода на новую запись нет :) SEANSES.Isable[Enable]Controls сделает невидимым перемещения. Правда вернуться обратно тоже будет проблематично :(


DelphiN!   (2005-02-22 09:29:00) [15]


> используй нормальный цикл пл датасету
>
> Seanses.First;
> while not Seanses.Eof and not b do begin
>
>  ...
>  Seanses.Next;
> end;


А какая разница ?
Когда через RecNo переключать, это визуально незаметно в гриде, а через Next ... заметно


DelphiN!   (2005-02-22 09:25:00) [16]


> 1) А где выход из цикла, если нужная запись найдена?


Выход из цыкла :

Вот Условие :
while (i <= Seanses.RecordCount) and (not b) do
begin

Если запись найдена то b делается в true(что является условием выхода из цыкла). При этом при каждой итерации цыкла цвеличивается значение i, а если i станет больше SEANSES.RecordCount то произойдет выход из цыкла


>  SEANSES.Filter := f;
>   SEANSES.RecNo := r; // а если найдена запись вне фильтра



Перед поиском фильтр убирается, далее производиться поиск, и результаты поиска записываються в Result, после поиска данные о поиске в таблице уже не нужны поэтому востанавливается первоначальный фильтр и позиция


ЮЮ   (2005-02-22 09:23:00) [17]

>То все работает, но переводить весь проект под этот стиль потребует немало времени

Хороший стиль - не наш стиль :)


ЮЮ   (2005-02-22 09:18:00) [18]

Во я и говорю вместо

while (i <= Seanses.RecordCount) and (not b) do
begin
  Seanses.RecNo := i;
...
end;

используй нормальный цикл пл датасету

Seanses.First;
while not Seanses.Eof and not b do begin

 ...
 Seanses.Next;
end;

P.S.
1) А где выход из цикла, если нужная запись найдена?
2)
 SEANSES.Filter := f;
  SEANSES.RecNo := r; // а если найдена запись вне фильтра


DelphiN!   (2005-02-22 09:14:00) [19]

Если производить поиск так :

Seanses.SQL.TEXT := 'Select * From SEANSES Where ''Comp_ = '+IP+'''';
Seanses.Open;
if Seanses.RecordCount > 0 then
//Нашли
else
//Не нашли

То все работает, но переводить весь проект под этот стиль потребует немало времени


DelphiN!   (2005-02-22 09:10:00) [20]

Если я непонятно объяснил проблемму, то вобщем это ф-ия поиска, которая должна находить значение в столбце COMP_, и эта ф-ия находит через раз, бывает когда в таблице 100% есть искомое значение она не находит его :(


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо