Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.339 c
8-1166580641
>>DEATH<<
2006-12-20 05:10
2007.10.21
палитра в bmp


2-1190494437
Neux
2007-09-23 00:53
2007.10.21
Удаление одинаковых строк


15-1190281655
Flikik
2007-09-20 13:47
2007.10.21
Delphi


2-1190722407
Washington
2007-09-25 16:13
2007.10.21
Переименование таблицы


2-1190972872
Riply
2007-09-28 13:47
2007.10.21
FreeLibrary для самой себя из APC-нити





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский