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

Вниз

Вопрос по RecNO   Найти похожие ветки 

 
Yurikon   (2007-09-25 17:13) [0]

Здраствуйте!

Использую TADOTable. Считываю RecNo, обновляю таблицу (так как записи могут удаляться и вставляться другим приложением), присваиваю RecNo считанное ранее значение. Оказывается, что у двух записей RecNo=2. Как такое может быть?

ЗЫ код такой:

procedure TfmMain.RefreshTable(tb: TDataSet);
var
 rn: integer;
begin
 with tb do
 begin
   try
     tb.Active := True;
     rn := tb.RecNo;
     tb.DisableControls;
     tb.Active := False;
     tb.Active := True;
     tb.RecNo := rn;
   finally
     tb.EnableControls;
   end;
 end;
end;


 
Desdechado ©   (2007-09-25 17:16) [1]

> Использую TADOTable. Считываю RecNo,
Забыть как страшный сон и то, и другое.
Использовать ADODataSet и первичный/уникальный ключ в таблице/запросе.


 
Плохиш ©   (2007-09-25 17:16) [2]

Другая запись имеет RecNo=2.

Запоминай ключевое поле и переходи на запись используя Locate.


 
Yurikon   (2007-09-25 17:19) [3]

Сейчас, обнаружил, что RecNo начинает дублироваться с добавленных другим приложением записей...


 
Плохиш ©   (2007-09-25 17:21) [4]


> RecNo начинает дублироваться с добавленных другим приложением
> записей...

Чукча - писатель...


 
Johnmen ©   (2007-09-25 17:28) [5]


> RecNo начинает дублироваться

Бред пьяного тракториста...:)


 
Yurikon   (2007-09-25 17:45) [6]


> Бред пьяного тракториста...:)


То есть такого быть не может? Это Вы  хотели сказать?


 
Johnmen ©   (2007-09-25 17:51) [7]


> То есть такого быть не может? Это Вы  хотели сказать?

Да.


 
Yurikon   (2007-09-25 17:53) [8]

Сюда скриншот можна как-то выложить?


 
stanislav ©   (2007-09-25 17:59) [9]

Свойство RecNo разве не ReadOnly?
Если это так, то ты просто меняешь номер текущей записи на номер, который ты запомнил...
А чтобы перемещаться между записями тебе нужно Locate Плохиш ©   (25.09.07 17:16) [2]
или использовать Bookmark.


 
Johnmen ©   (2007-09-25 17:59) [10]

Нельзя.
Но можно подробно описать это чудо...:)


 
sniknik ©   (2007-09-25 18:00) [11]

> Сюда скриншот можна как-то выложить?
ложи на общие, типа
http://imageshack.us/
сюда давай ссылку


 
sniknik ©   (2007-09-25 18:08) [12]

> Но можно подробно описать это чудо...:)
это не чудо, он может как художник просто "так видеть"...

типа читает, смотрит запись, удаляет, переходит по рекно, опять смотрит... а они одинаковые. (понятно почему)
+ есть вариант не столь очевидный... сделал показ рекно в калькулируемом поле, удаляет смотрит, а в грида 2 одинаковых рядом. рекно удаленной пересчиталось а старое в записи рядом нет (сталкивался у первой и последней записи. не помню при каких условиях но практичекки на 95% уверен у него будет не середина грида с "задвоениями" ;)


 
Anatoly Podgoretsky ©   (2007-09-25 19:34) [13]

> Yurikon  (25.09.2007 17:13:00)  [0]

RecNo оно логическое, не привязано к конкретной записи.
Ферштейн?


 
Ping   (2007-09-25 20:44) [14]

А чтобы перемещаться между записями тебе нужно ... использовать Bookmark.

В примере из [0] набор данных переоткрывается и Bookmark будет невалидным.


 
Anatoly Podgoretsky ©   (2007-09-25 20:48) [15]

> Ping  (25.09.2007 20:44:14)  [14]

А RecNO тем более.


 
Yurikon   (2007-09-26 15:32) [16]

Вот скриншот таблицы, где recno - это вычислимое поле (= RecNo).

http://img261.imageshack.us/my.php?image=examplerecnoqj9.png

Походит на то, что описал sniknik.

Для других таблиц, где нет удаления записи из вне - такой код отлично работает, так что "валидный" вызов RecNo.

В итоге сделал через  Locate, но пришлось добавить во все таблицы поле счетчик с одинаковым именем, а хотелось написать универсальный код для любой таблицы.


 
sniknik ©   (2007-09-26 15:57) [17]

> сделал через  Locate ... поле счетчик с одинаковым именем
надо(желательно) не счетчик, а ключ, который впрочем по совместительству может быть и счетчиком.

> а хотелось написать универсальный код для любой таблицы.
и поэтому ты решил завязаться на непостоянное значение которое мало тогочто в разный момент может быть разное, но может быть и вообще неопределено (-1 для всех)?

> Походит на то, что описал sniknik.
если действительно то же самое, то проверь так, сделай еще одно(или используй существующее) поле и у него в обработчике OnGetText делай Text-у то же значение рекно.
после воспроизведи ту же ситуацию с задвоениями, и сравни поля рядом... должны различаться. (для OnGetText нет ситуаций с не вызовом как у калькулируемого) либо не сумеешь получить задвоение ... (если второй вызов рекно спровоцирует "онкальк")


 
Anatoly Podgoretsky ©   (2007-09-26 16:12) [18]

Что за вирусный сайт, кто просил мне лохотрон втюхивать


 
Anatoly Podgoretsky ©   (2007-09-26 16:13) [19]

У тебя вероятно ошибка в прорамме, с вычислимым полем.



Страницы: 1 вся ветка

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
15-1187779146
Сергей М.
2007-08-22 14:39
2007.10.21
Помощь экстрасенса


2-1190906832
hinst
2007-09-27 19:27
2007.10.21
Прямоугольник текста


6-1172044540
jiny
2007-02-21 10:55
2007.10.21
Как подкл. ч-з TCPClient, отправить строку "GET" и пол.ответ ?


1-1186647781
kudatsky
2007-08-09 12:23
2007.10.21
Вызов OutLook


15-1190192760
nikolaygor
2007-09-19 13:06
2007.10.21
Delphi: Сдвиг строчек в редакторе кода