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

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

oraclequery.prior - error какой-то детский


gentos ©   (2007-08-14 15:34:00) 

мастера не знаю в чем дело но есть следующий код

procedure TShowPictureForm.FormShow(Sender: TObject);
begin
  q := PTreeview.SelPicture(ID);
  q.Scrollable :=true;
  q.Execute;
  if q.FieldAsInteger('lvl')=1 then
   tbPrior.Enabled := false;
  common;
  q.Next;
  if q.Eof then
   tbNext.Enabled := false;
end;

procedure TShowPictureForm.tbNextClick(Sender: TObject);
begin
  tbPrior.Enabled := true;
  common;
  q.Next;
  if q.Eof then
   tbNext.Enabled := false;
end;
procedure TShowPictureForm.tbPriorClick(Sender: TObject);
begin
  tbNext.Enabled := true;
  q.Prior;
  common;
  if q.FieldAsInteger('lvl')=1 then
   tbPrior.Enabled := false;
end;

и общая процедурка для 3 предыдущих

procedure TShowPictureForm.common();
begin
  MStream :=  TMemoryStream.Create;
  LobCreateTemporary(LOB);
  Jpg:=TJPEGImage.Create;
  Bit := TBitmap.Create;
  LOB.Copy(q.LOBField('Picture'),q.LOBField('Picture').Size);
  MStream.CopyFrom(LOB,LOB.Size);
  MStream.Position:=0;
  Jpg.LoadFromStream(MStream);            // if jpg do bmp
  Bit.Assign(Jpg);
  img.Picture.Assign(Bit);
  Jpg.Free;
  Bit.Free;
  MStream.Free;
  LobFreeTemporary(LOB);
end;


да и  есть функция пакета PTreeview.SelPicture ее не показываю так как там все правильно и что получается кнопочка вперед при ее нажатие делает то, что надо - то есть, выводи мне на екран следующую картинку а при нажатии на кнопку предыдущая картинка ругается следующими словами : You cannot access field data beyond Eof и как это понять ? :) я ще не выхожу за рамки выборки и свойство q.Scrollable :=true;сделал тру как хелп пишет , в чем прикол ?  :)


gentos   (2007-08-14 16:25:00) [1]


> Вася Правильный   (14.08.07 16:24) [17]
>
> > а потом перевожу так как я уже перевел при show формы,
>  вот так
>
> плохо разваливать логику по разным углам
> оттого и косяки


та нету тут никаких косяков :) эт уже наверное знак, что на сегодня уже писать хватит :)


Вася Правильный   (2007-08-14 16:24:00) [2]


> а потом перевожу так как я уже перевел при show формы, вот так

плохо разваливать логику по разным углам
оттого и косяки


gentos   (2007-08-14 16:20:00) [3]


> Вася Правильный   (14.08.07 16:14) [15]


БОФ :)- я думал это что-то серьезное :), а насчет

> еще как меняется: сначала показать что-то, а потом переехать
> на другую запись или сначала переехать, а потом показать
> ее содержимое

в моем случае сначало необходимо поменять, а потом показать при нажатии на tbprior, а при нажатии на tbnext сначала показывают а потом перевожу так как я уже перевел при show формы, вот так


Вася Правильный   (2007-08-14 16:14:00) [4]

BOF = beginning of file
EOF = end of file
свойства у датасета такие

> от перестановки "доданкив" сумма не миняется

еще как меняется: сначала показать что-то, а потом переехать на другую запись или сначала переехать, а потом показать ее содержимое


gentos   (2007-08-14 16:14:00) [5]


> Сергей М. ©   (14.08.07 16:03) [9]

а можете написать как этот "взад" анализировать ?
может функции вот так вот написать :

FUNCTION Sel_Picture( nID IN NUMBER ) RETURN T_REFCURSOR IS      
 CUR T_REFCURSOR;
cSQL1 VARCHAR2(500):='select * from WDS$DOCUMENTBODY u where id=:nID order BY u.lvl';
BEGIN
OPEN CUR FOR cSQL1 USING nID;;
 END Sel_Picture;

тогда надо будет анализировать ?


gentos   (2007-08-14 16:07:00) [6]


> Вася Правильный   (14.08.07 16:03) [10]


смотрел все ок от перестановки "доданкив" сумма не миняется :) так и здесь, скорее всего проблема в [9] , но я не знаю , что и как это :)


gentos   (2007-08-14 16:06:00) [7]


> Сергей М. ©   (14.08.07 16:03) [9]


а что такое BOF ?


gentos   (2007-08-14 16:05:00) [8]


> Сергей М. ©   (14.08.07 16:01) [7]


я отсканировал по очереди 3 бумажки: на 1 бумажке - нарисована "1" на второй "2" , на третьей "3" и загнал их со сканера в базу , теперь я их оттуда высовываю , так как некоторые  документы состоят из нескольки страниц , то есть возникла необходимость их листать туда сюда, сейчас вот это и реализовываю, так вот когда я нажимаю просмотр документа, то вначале появляется изображение с "1" когда клацаю "батоннекст" появляется изображение с "2" и вот когда клацаю , без разницы или влево или вправо, появляется "картинка с 3", вот так...


Вася Правильный   (2007-08-14 16:03:00) [9]


>  q.Prior;   common;
---
> common;   q.Next;

разницу видишь?
а может у тебя на разные кнопки один обработчик назначен?


Сергей М.   (2007-08-14 16:03:00) [10]


> gentos   (14.08.07 15:57) [6]


При движении курсора "взад" принято анализировать BOF.

Где у тебя этот анализ ?)


gentos   (2007-08-14 16:02:00) [11]


> Сергей М. ©   (14.08.07 15:51) [5]


функция ораклевая в пакете красиво лежит никого не трогает

FUNCTION Sel_Picture( nID IN NUMBER ) RETURN T_REFCURSOR IS      
 CUR T_REFCURSOR;
BEGIN
OPEN CUR FOR select * from WDS$DOCUMENTBODY u where id=nID order BY u.lvl;
 RETURN CUR;
END Sel_Picture;


Сергей М.   (2007-08-14 16:01:00) [12]


> gentos   (14.08.07 15:57) [6]


> выводит картинку после 2 не 1 , а 3


Какие нахрен "картинки" ?)


gentos   (2007-08-14 15:57:00) [13]


> Сергей М. ©   (14.08.07 15:51) [5]


смысла в этом нет !, мне это этого вранье пользы никакой

procedure TShowPictureForm.tbPriorClick(Sender: TObject);
begin
  tbNext.Enabled := true;
  q.Prior;
  common;
//   if q.FieldAsInteger('lvl')=1 then
//    tbPrior.Enabled := false;
end;

при нажатии на эту клавишу выводит картинку после 2 не 1 , а 3 , то же самое было бы если бы я нажал на клавишу tbnext , код ее ниже

procedure TShowPictureForm.tbNextClick(Sender: TObject);
begin
  tbPrior.Enabled := true;
  common;
  q.Next;
  if q.Eof then
   tbNext.Enabled := false;
end;


Сергей М.   (2007-08-14 15:51:00) [14]


> вместо q.prior выполняется комманда q.next


Вранье.


Плохиш   (2007-08-14 15:49:00) [15]


> оказалось вместо q.prior выполняется комманда q.next

Тут только два варианта или ошибка в вашей программе или ошибка в вашем компоненте, на который ссылается q.


gentos   (2007-08-14 15:47:00) [16]


>
> Сергей М. ©   (14.08.07 15:39) [2]


указал !, оказалось вместо q.priorвыполняется комманда q.nextчто это такое ? :)


Сергей М.   (2007-08-14 15:39:00) [17]

Хня какая-то..

Укажи уже строчку в приведенном коде, которая вызывает исключение такое-то с таким-то сообщением..


Плохиш   (2007-08-14 15:38:00) [18]

В делфи встроена такая вещь, отладчиком кликают. Попробуй ей воспользоваться.


Наверх

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