Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2007, 09:50   #11
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
violation of PRIMARY or UNIQUE KEY
Значение поля записи, задействованного вами в первичного ключе по определению должно быть уникальным. Текст ошибки говорит о том, что вы пытаетесь вставить еще одну запись с ТЕМ ЖЕ значением в этом поле.
mihali4 вне форума Ответить с цитированием
Старый 06.11.2007, 13:46   #12
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Нужно позаботиться о генерации уникального значения для ключевого поля. Если вы не завели генератор для ключевого поля вашей таблицы, создайте его. Далее с помощью генератора можете либо генерить значение на стороне клиента, либо для заполнения таблицы создайте хранимую процедуру либо триггер и там генерите уникальное значение.
MyTable_ID = GEN_ID(GEN_MYTABLE_ID, 1);

Если уникальное значение поля будет генериться на стороне клиента, лучше все-таки использовать IBDataSet, в нем есть свойство GeneratorField. Настроите это свойство и уникальное значение будет создаваться автоматически.
Rik вне форума Ответить с цитированием
Старый 06.11.2007, 14:18   #13
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от dron-s Посмотреть сообщение
сорри...
просто меня вот это возмутило вообще

извините, но это бред...

что это мешает? невижу проблем...
Неторопитесь с эмоциями. Предполагаю, что вы компонентов IBExpress и в глаза не видели. SQL Запросы писать все мы умеем. Вопрос только в том куда этот SQL запрос:
UPDATE NameTable n set
namefiel = 0
where
n.id=er_id
он в IBQuery вписывать будет? Там уже прописан Select .. from .., с помощью этого запроса он тащит данные с сервера на сторону клиента. Чтобы сделать полученный набор данных в Query1 редактируемым, ему потребуется подключить дополнительно IBUpdateSQL, вот там то он и сможет прописать и Update и Insert и Delete и Execute procedure. Все это есть в одной компоненте IBDataSet, в ней то и можно прописать все запросы на выборку, вставку, обновление и удаление данных, кроме этого там же можно настроить автоматическую генерацию уникального ключа таблицы и запросы которые будут срабатывать при вызове метода Refresh.
Вот описание из Delphi Help:
Use TIBQuery to access one or more tables in a database using SQL statements. The TIBQuery component provides a read-only dataset, and adapts well to the InterBase client/server environment.

Здесь автор темы задает вопрос не о SQL, а о компонентах InterBase и их функционале.

Автор темы не последовал рекомендациям на счет IBDataSet и продолжил использование IBQuery и как результат тема получила продолжение, в виде новой ошибки в Primary Key.

Обычно люди работавшие с BDE и начинающие осваивать IBExpress, в первую очередь ищут знакомые компоненты, которые обеспечивают схожий функционал с TQuery. И всегда встают на эти грабли с долбаным TIBQuery, когда же его уберут нафиг вообще, было бы лучше чтоб его вообще сразу небыло...

Последний раз редактировалось Rik; 06.11.2007 в 20:10.
Rik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
interbase+delphi KiSH333 БД в Delphi 3 15.08.2008 09:53
Си и InterBase Edimus Общие вопросы C/C++ 2 23.11.2007 16:32
Delphi и InterBase -2 Edimus БД в Delphi 5 07.11.2007 14:51
Как из Delphi залезть в системный таблицы InterBase Leee БД в Delphi 0 21.04.2007 21:04
InterBase 6.5 san4es БД в Delphi 0 12.12.2006 20:03