Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.006 c
4-97456
SPeller
2002-03-29 10:13
2002.05.30
Систем инфо...


14-97385
SPeller
2002-04-18 08:44
2002.05.30
Проблема с Виндой


3-97202
dim-
2002-05-08 20:35
2002.05.30
Посоветуйте компонент


1-97263
a_k
2002-05-18 11:18
2002.05.30
ListBox.Locate ?


7-97438
arbiter
2002-03-01 22:44
2002.05.30
Капитальный перехват клавиатуры





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