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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2012, 16:42   #1
davidoff_pk
Пользователь
 
Регистрация: 08.04.2011
Сообщений: 21
По умолчанию MySQL, dbExpress, auto_increment

Добрый день.

Есть таблица в базе на MySQL. Подключаюсь к ней с помощью dbExpress. В таблице 3 поля - id (int, auto_increment), name (string), status(int). Добавляю запись через dbEdit, которые соединены с полями name и status.
Проблема заключается в том, что программа выдает мне ошибку и требует у меня вводить данные в поле id, которое auto_increment! Помогите разобраться, в чем беда? Может кто-нить сталкивался?

Работаю с компонентом SimpleDataSet. Окно таблицы пользователей открывается программно:

Код:
fSprav.DBGrid1.Columns[0].Title.Caption := 'Номер';
    fSprav.DBGrid1.Columns[0].FieldName := 'user_id';
    fSprav.DBGrid1.Columns[1].Title.Caption := 'ФИО';
    fSprav.DBGrid1.Columns[1].FieldName := 'user_name';
    fSprav.DBGrid1.Columns[2].Title.Caption := 'Статус';
    fSprav.DBGrid1.Columns[2].FieldName := 'sys_admin';
    fSprav.SimpleDataSet1.DataSet.CommandText := 'select user_id, user_name, sys_admin from rtf_user';
    fSprav.SimpleDataSet1.Open;
    fSprav.Caption := 'Пользователи';
    fSprav.ShowModal;
Код добавления сотрудника пользователя выглядит так

Код:
if fSprav.SimpleDataSet1.Modified then begin
      fSprav.SimpleDataSet1.Post;
После этого срабатывает процедура для обновления:

Код:
procedure TfSprav.SimpleDataSet1AfterPost(DataSet: TDataSet);
begin
  SimpleDataSet1.ApplyUpdates(-1);
end;
davidoff_pk вне форума Ответить с цитированием
Старый 25.01.2012, 07:33   #2
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

А покажите DDL таблички. Есть подозрение, что оно у вас не autoinc, а int с обязательным заполнением.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 25.01.2012, 09:47   #3
davidoff_pk
Пользователь
 
Регистрация: 08.04.2011
Сообщений: 21
По умолчанию

Спасибо за предположение. Но я создавал табличку в интерфейсе phpadmin, там четко видно, что поле auto_increment. То есть если написать там какой-нить insert, то поле id заполняется автоматом на ура, я пробовал.
davidoff_pk вне форума Ответить с цитированием
Старый 25.01.2012, 10:40   #4
davidoff_pk
Пользователь
 
Регистрация: 08.04.2011
Сообщений: 21
По умолчанию

Попробовал из делфи добавлять записи инсёртом через свойство SimpleDataSet, все отлично.

Скрипт типа
Код:
'insert into rtf_user (user_name, sys_admin) values (' +QuotedStr(Edit1.Text) +', 0)';
ошибки не выдал.

Так почему же при добавлении напрямую в грид или через dbEdit с меня просят вводить поле auto_increment???

Сделаю наверное добавление через SQL, но буду очень рад любому совету!
davidoff_pk вне форума Ответить с цитированием
Старый 25.01.2012, 10:50   #5
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Цитата:
Сделаю наверное добавление через SQL, но буду очень рад любому совету!
Вот это правильное решение. Не надо делать
Цитата:
добавлении напрямую в грид
.
Дурной тон с точки зрения построения интерфейсов.
Да и не удобно для пользователя.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 25.01.2012, 11:01   #6
davidoff_pk
Пользователь
 
Регистрация: 08.04.2011
Сообщений: 21
По умолчанию

Я про "напрямую в грид" для примера привел) Но добавление через dbЕdit то вполне допустимо и удобно...
Ладно, спишем это на косяк dbExpress тогда. Спасибо)
davidoff_pk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL, dbExpress, Не работает Select lexastik БД в Delphi 0 02.09.2011 17:43
MySQL AUTO_INCREMENT вида 00000000* Adult_Master SQL, базы данных 1 04.04.2011 07:48
Auto_Increment D-Snaker PHP 1 21.08.2009 20:34
BLOB+Mysql+DbExpress Квэнди БД в Delphi 3 02.03.2007 18:01