Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 24.01.2012, 16:42   #1
davidoff_pk
Пользователь
 
Регистрация: 08.04.2011
Сообщений: 21
Репутация: 10
По умолчанию 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
Репутация: 140

icq: 479068502
По умолчанию

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

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

Попробовал из делфи добавлять записи инсёртом через свойство 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
Репутация: 140

icq: 479068502
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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 19:01


23:53.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru