Текущий архив: 2004.10.24;
Скачать: CL | DM;
ВнизКак получить новое значение счётчика Найти похожие ветки
← →
Lamer8 (2004-09-28 01:08) [0]Имеются таблицы:QW и ER, в таблице QW есть ключевое поле ID (счётчик!) и ещё несколько полей,допустим ещё поле ID_Name(текстовое). В таблице ER поля ID (числовое целое, >0, значение обязательно) и ID_Value (числовое). Таблицы связаны по полю ID. БД MS Access. Для доступа использую компонент ADODataSet. Свойство Command Text установлено:
SELECT *
FROM QW INNER JOIN ER ON QW.ID = ER.ID
На форме имеется таблица DBGrid, в которой отображаются поля ID_Name и ID_Value, взятые по запросу из обоих таблиц. Пользователь может изменять значения.
Суть проблемы:
При добавлении новой записи в запрос методом Append, ADODataSet не получает значение ключа ID присвоенное счётчиком в таблице QW. А поле ID таблицы ER обязательно должно соответствовать значению ID таблицы QW, иначе возникает ошибка при сохранении таблицы методом Post. Как можно сделать чтоб при сохранении таблицы поле ER.ID получало значение счётчика поля QW.ID?!!!
← →
KSergey © (2004-09-28 08:02) [1]При Append еще никто никуд ничего не добавляет в БД, это всего лишь видимость.
Реально добавляется (а значит и возникает новое значение счетчика), лишь после Post.
Почитайте так же все 3 статьи из цикла
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=408
← →
Lamer8 (2004-09-28 08:57) [2]Дак я читал эти статьи, там автор похоже не знает как это делаеться, подобный случай описывается в 3-й статье, вот цитата:
Если же при добавлении были внесены значения новой строки не только для таблицы Calls? Тогда Cursor Engine попытается добавить по одной записи в обе таблицы. Это у него, скорее всего, не получится - абонента то можно добавить - но для добавления в таблицу Calls в нашем примере нужно иметь значение AbonentID которое будет в тот момент не известно.
И в программе которая дана в качестве примера это соответственно тоже не работает. Может есть какой-нибудь способ запросить с сервера последнее значение автоинкремента(счётчика) или то которое будет при добавлении новой записи.
← →
A_N_D © (2004-09-28 09:07) [3]IDENT_CURRENT
Returns the last identity value generated for a specified table in any session and any scope.
Syntax
IDENT_CURRENT("table_name")
Arguments
table_name
Is the name of the table whose identity value will be returned. table_name is varchar, with no default.
← →
KSergey © (2004-09-28 09:34) [4]Так это все в один грид выгребается?? Тогда логику надо менять, возможно - на корню. Может LookUp поля помогут, например?
← →
Lamer8 (2004-09-28 21:26) [5]А можно поподробнее про IDENT_CURRENT, это откуда вообще комманда, немогу найти в справке.
← →
АлексейК (2004-09-29 05:42) [6]А можно поподробнее про IDENT_CURRENT, это откуда вообще комманда, немогу найти в справке.
Из MSSQL Server.
Страницы: 1 вся ветка
Текущий архив: 2004.10.24;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.051 c