Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];

Вниз

AutoINC поля и Interbase   Найти похожие ветки 

 
msoftware   (2003-05-02 04:54) [0]

Приветствую! В б.д INterBase имеется автоприращаемое поле, для него естественно генератор и триггер. Из компонентов использую TIBTable, TIBUpdateSQl, TIBTransaction,TIBDataBase, TDataSource.
При добавлении новой записи в базу данных, возникает ошибка, которая просит чтобы юзер внес значение в это AutoINC поле, хотя значение этого поля должно само генерироваться. Понятно что генерация происходит только после метода POST, а пока AutoINC поле пусто сервер не дает команду на выполнение POST. Можно было бы сделать генерируемое поле необязательным, но на него ссылается первичный ключ. Посоветуйте как быть


 
Sergey Masloff   (2003-05-02 09:21) [1]

Компоненты доступа закачивают метаданные из бызы и для ключа ставят свойство Required. То есть пока его не введешь... Решение - снять этот флажок вручную.
TField -> property Required: Boolean;


 
Vlad1   (2003-05-02 20:45) [2]

Попробуй TIBQUERY, всё делай через ExecSQL - нахрен тебе TIBTable,TIBUpdateSQL? - и проблем не будет.


 
Zacho   (2003-05-02 21:08) [3]


> Vlad1 © (02.05.03 20:45)

Для выполнения запросов есть специальный компонент - TIBSQL, лучше пользоваться им, чем TIBQuery и ExecSQL
А вообще, насколько я понял, msoftware © нужен просто редактируемый DataSet. Для этого лучше использовать TIBDataSet или TIBQuery. Для получения значения первичного ключа новой записи в этом случае можно воспользоваться св-вом GeneratorField.
И еще могу посоветовать автору вопроса прочитать статью http://www.ibase.ru/devinfo/generator.htm


 
Zacho   (2003-05-02 21:25) [4]

Еще немного добавлю.
Главная проблема msoftware © в том, что он присваивает значение ПК для новой записи в триггере. Как следствие из этого - приложение не может узнать ПК новой записи. Стандартный подход - значение в поле ПК заносит именно приложение, а не триггер. Это можно сделать с помощью св-ва GeneratorField или, например, в событии OnNewRecord выполнить запрос SELECT GEN_ID(MY_GEN,1) FROM RDB$DATABASE и полученное значение присвоить нужному полю. Впрочем, как именно получать значение ПК и присваивать его есть несколько вариантов, главное - что присвоение происходит именно на клиенте, а не на сервере. Или для вставки новой записи используется ХП, которая и возвращает ПК.



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

Форум: "Базы";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
14-70508
Stexen
2003-05-04 21:38
2003.05.22
Почта, не в тему но надо


14-70526
snake1977
2003-05-05 12:26
2003.05.22
агрегативные функции


1-70204
Sensor
2003-05-04 23:59
2003.05.22
Работа с реестром


3-70160
Toshanius
2003-05-02 10:39
2003.05.22
Index is out of date!


14-70436
zumo
2003-05-02 08:10
2003.05.22
Проигрывание avi





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