Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
14-1096895691
Zacho
2004-10-04 17:14
2004.10.24
Дефрагментация в XP


4-1095424108
SashkoSoft
2004-09-17 16:28
2004.10.24
Как достучаться до dll ?


3-1095927162
Галинка
2004-09-23 12:12
2004.10.24
Как добавить столбцы в DBGridat Runtime?


14-1096431982
MBo
2004-09-29 08:26
2004.10.24
Новосибирск. Осенняя встреча.


1-1097223451
Аня
2004-10-08 12:17
2004.10.24
Архивация





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