Текущий архив: 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.48 MB
Время: 0.051 c