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-22 08:59:00) [21]


>  [3] ЮЮ ©   (22.02.05 08:41)



> что значит "пятая запись" датасета


Это значит IBQuery.RecNo = 5; //А всего записей в таблице 2-е

У меня и так 1-н проход по датасету, вот полный код :

var
 i: Integer;
 b: Boolean;
 f: string;
 r: Integer;
 Uslug: TUslug;
 SQL: String;
begin
 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;
   if Seanses.FieldByName('COMP_').AsString = IP then
   begin                                          
     Result.IP := IP;
     Result.StartTime := Seanses.FieldByName('StartTime_').AsDateTime;
     Result.EndTime := Seanses.FieldByName('EndTime_').AsDateTime;
     Result.LeftTime := DateTimeToUnix(Result.EndTime) - DateTimeToUnix(now);
     Result.State := Seanses.FieldByName('State_').AsString;
     Result.Usluga := Seanses.FieldByName('Usluga_').AsString;
     Uslug := GetUslugType(Result.Usluga,IpToNum(Result.IP),now,Tariffs);
     if Uslug.Package then
     begin
       Result.AllMoney := Uslug.Price;
       Result.LeftMoney := 0;
     end
     else
     begin
       Result.AllMoney := Seanses.FieldByName('Money_').AsFloat;
       Result.LeftMoney := TimeToMoney(now, Result.EndTime, IpToNum(IP),
         Result.Usluga, 0, Tariffs);
     end;
     Result.OFF := false;
     Result.Name := IpToName(IP);
     b := true;
   end;
   Inc(i);
 end;
 SEANSES.Filter := f;
 SEANSES.RecNo := r;
end;

С парадоксом все работало на Ура, как перевел на IB все глючить стало !


ЮЮ   (2005-02-22 08:41:00) [22]

Извини, Паша, но здесь я не помощник. Такой метод навигации мне не понять, ну что значит "пятая запись" датасета ? Я бы запомнил значение ключевого поля (которого у тебя, пока, нет) и сделал бы Locate, на худой конец. М вообще бы обошёлся одним проходом по датасету. Твои манипуляции совершенно не понятны для моего уразумения :(


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

А нет, тема не закрыта, оказывается FeetchAll не помог ... :(


DelphiN!   (2005-02-22 07:49:00) [24]

FetchAll забыл поставить, сорри, тема закрыта !


Страницы:   1 2

Наверх

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