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

Вниз

ADO - значение толькочто добавленных строк?   Найти похожие ветки 

 
ghost_by ©   (2002-04-19 08:12) [0]

Есть в таблице поле - AutoInc, после добавления записи в эту таблицу, мне нужно получить значение этого поля для связывания с другой тоблицей, но вот в чем проблема - значение из этого поля всегда = 0. Т.Е. если открыть базу - все ОК, но если добавить новую запись - что то не так, в добавленных записях свегда =0.

Что делать? Закрывать и заново открывать таблицу, или есть метод попроще?

(D5+ADO+Jet4.0), может все дело в Jet4.0?


 
Юрий Жуков ©   (2002-04-19 08:53) [1]

ADODataSet1.Properties["Update Criteria"].value :=adCriteriaKey;
ADODataSet1.Properties["Update Resync"].Value := adResyncAll;
Еще обрати внимание на "Resync Command".

Также прочитай здесь
http://www.delphikingdom.com/helloworld/ado01.htm
http://www.delphikingdom.com/helloworld/ado02.htm
http://www.delphikingdom.com/helloworld/ado03.htm


 
SelfDestructor   (2002-04-19 10:49) [2]

Странно, у меня при работе с теми же самыми вещами(ADO + Jet4.0) таких проблем не возникало. После того, как я делал Post, я брал значение FieldByName("ID"), тип которого в Access2000 был "Счетчик" и мне возвращалось корректное автоматически сгенерированное значение ID. Может дело в том, что у меня C++Builder, но ведь там всё тоже самое.


 
KSergey ©   (2002-04-19 12:37) [3]

>SelfDestructor
Автор вопроса не указал какая БД пользуется, но на сколько я помню (на основании приведенных выше статей в высказываении Юрий Жуков) для Access2000 это действительно так, а вот для предыдущих версий и других БД - это не срабатывает.
Например, применительно к MS SQL данная тема периодически пережевывается в форуме sql.ru, хотя и там, похоже, все уже что можно было пережевали и выяснили.


 
ghost_by ©   (2002-04-21 01:18) [4]

Автор вопроса не указал какая БД - ACCESS 97.

ADODataSet1.Properties["Update Criteria"].value :=adCriteriaKey;
ADODataSet1.Properties["Update Resync"].Value := adResyncAll;
Вроде как данный метод не помогает с ACCESS97. Неужели нет решения данной проблемы?



 
ghost_by ©   (2002-04-22 13:36) [5]

HELP! Очень нужно!


 
wicked ©   (2002-04-22 13:56) [6]

делай после post"а resync... например, в обработчике OnAfterPost...


 
Stranger ©   (2002-05-08 13:06) [7]

Я использовал следующие варианты.
Если у тебя в записи есть еще одно уникальное поле, то запрашиваешь по нему, ведь ты должен знать
значения остальных полей во вновь вставленной записи, и получаешь нужный ID.
Если таких полей нет, то добавляешь свой ID, например GUID, есть функция генерации GUIDа,
и по нему потом получаешь значение автоинкрементного ID,
либо же, если ID автоинкрементный, то у вновь вставленной записи ID максимальный, следовательно
запросом:
Select
max(ID) as LastID
from
<Имя таблицы>
ты получаешь ID только что вставленной записи,
вызов этого запроса можно вставить в обработчик события AfterPost


 
jonik pegas ©   (2002-05-08 14:21) [8]

>Stranger
С автоинкрементом если пользователь не один то может получить не свою запись. В данном случае наверно ввести еще одно поле куда прописывать временный програмно сгенерированный ключ и по нему искать. В MS SQL можно использовать NEW_ID()



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

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

Наверх




Память: 0.48 MB
Время: 0.008 c
14-97415
DeMoN-777
2002-04-20 23:08
2002.05.30
Win 95 VS Win 98/Me


3-97189
DPetrovich
2002-05-08 12:25
2002.05.30
Проблема с кодировкой


7-97444
sdan
2002-03-04 18:05
2002.05.30
Keyboard


4-97458
poiZon
2002-03-27 15:24
2002.05.30
Hook


3-97172
Sobolyn
2002-05-07 14:52
2002.05.30
Как очистить файл *.mb для какой-нибудь таблицы *.db