Форум: "Базы";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c