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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2012, 13:15   #1
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
Вопрос ввод данных в БД

привет всем!
не могу сделать ввод данных в базу. написал код и дает мне ошибку на компонент query1, вот код:

Код:
form1.query2.Close;
form1.Query2.sql.Clear;
form1.Query2.sql.Add ('insert into sklad_tab1 (Sezon_goda, Nomer_model, Opisanie, Firma, Cena_zakup, Data_prih)');
form1.Query2.sql.Add ('values ("'+ComboBox1.text+ '", "'+edit1.text+ '","'+edit3.Text+ '","'+ComboBox2.Text+ '"," ' +edit2.Text+ '", "' +edit4.Text+ '")');
form1.Query2.ExecSql;

form1.query1.Close; //ошибка тут
form1.Query1.SQL.Clear;
form1.Query1.SQL.Add('select * from sklad_tab1');
form1.Query1.Open;
говорит об ошибке в базе. в чем причина? если другие компоненты с базой работают и все так же настроенно
kuzmich вне форума Ответить с цитированием
Старый 13.07.2012, 14:49   #2
AlexMas
Пользователь
 
Аватар для AlexMas
 
Регистрация: 30.05.2012
Сообщений: 69
По умолчанию

Вместо двойных кавычек, юзайте 2 апострофа:
Код:
form1.Query2.sql.Add ('values ('''+ComboBox1.text+ ''', '''+edit1.text+ ''','''+edit3.Text+ ''','''+ComboBox2.Text+ ''','' ' +edit2.Text+ ''', ''' +edit4.Text+ ''')');
AlexMas вне форума Ответить с цитированием
Старый 13.07.2012, 14:57   #3
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

Цитата:
Сообщение от AlexMas Посмотреть сообщение
Вместо двойных кавычек, юзайте 2 апострофа:
Код:
form1.Query2.sql.Add ('values ('''+ComboBox1.text+ ''', '''+edit1.text+ ''','''+edit3.Text+ ''','''+ComboBox2.Text+ ''','' ' +edit2.Text+ ''', ''' +edit4.Text+ ''')');
раньше она с моим кодом открывалась, исправил и теперь вообще компиляция не идет! сразу на базу идет ошибка
kuzmich вне форума Ответить с цитированием
Старый 13.07.2012, 17:23   #4
Лесной
 
Регистрация: 13.07.2012
Сообщений: 7
По умолчанию

А что за ошибка? Попробуйте с помощью Query2.Params. Так понятнее получается. А вообще я не понимаю зачем куча апострофов. Попробуйте так.
Код:
form1.Query2.sql.Add('values ('+ComboBox1.text+ ', '+edit1.text+ ', '+edit3.Text+ ', '+ComboBox2.Text+ ', ' +edit2.Text+ ', ' +edit4.Text+ ')');
Лесной вне форума Ответить с цитированием
Старый 13.07.2012, 17:25   #5
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

изменил код как мне и говорили. вот сам код:

Код:
form1.query2.Close;
form1.Query2.sql.Clear;
form1.Query2.sql.Add ('insert into sklad_tab1 (Sezon_goda, Nomer_model, Opisanie, Firma, Cena_zakup, Data_prih)');
form1.Query2.sql.Add ('values ('''+ComboBox1.text+ ''', '''+edit1.text+ ''','''+edit3.Text+ ''','''+ComboBox2.Text+ ''',''' +edit2.Text+ ''', ''' +edit4.Text+ ''')'); //изменения тута
form1.Query2.ExecSql;

form1.query1.Close;
form1.Query1.SQL.Clear;
form1.Query1.SQL.Add('select * from sklad_tab1');
form1.Query1.Open;
все равно выдает ошибку и вот сама ошибка:



подскажи те что небудь
Изображения
Тип файла: jpg error_db.jpg (12.2 Кб, 153 просмотров)
kuzmich вне форума Ответить с цитированием
Старый 13.07.2012, 17:36   #6
Лесной
 
Регистрация: 13.07.2012
Сообщений: 7
По умолчанию

Это означает, что ты вставляешь запись,значение ключевого поля которой уже существует. Например, есть у тебя табличка id работника и фамилия работника, где Id работника -- ключевое поле. А ты вставляешь первую запись 1, Иванов, а вторую запись 1, Петров. Происходит ошибка. Если я все правильно помню))

Последний раз редактировалось Лесной; 13.07.2012 в 17:39.
Лесной вне форума Ответить с цитированием
Старый 13.07.2012, 17:50   #7
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

другие идеи есть? потому что попробывал с другой записью и все равно не работает
kuzmich вне форума Ответить с цитированием
Старый 13.07.2012, 17:56   #8
Лесной
 
Регистрация: 13.07.2012
Сообщений: 7
По умолчанию

Это ошибка - нарушение ссылочной целостности.
Либо повторяется значение первичного ключа, либо попытка указать несуществующее значение для внешнего ключа. А что конкретно - это надо сомтреть конкретно код и базу.
Лесной вне форума Ответить с цитированием
Старый 13.07.2012, 18:12   #9
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

вот сам проект: тут
Вложения
Тип файла: rar БД Рынок.rar (385.1 Кб, 11 просмотров)
kuzmich вне форума Ответить с цитированием
Старый 13.07.2012, 20:49   #10
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Запрос работает без ошибки:
Код:
  form1.query2.Close;
  form1.Query2.sql.Text :=
      'insert into sklad_tab1 (Sezon_goda, Nomer_model, Opisanie, '+
      'Firma, Cena_zakup, Data_prih)'+
      'values ('+QuotedStr(ComboBox1.text)+ ','+edit1.text+','+QuotedStr(edit3.Text)+','+
                QuotedStr(ComboBox2.Text)+ ','+edit2.Text+',' +QuotedStr(edit4.Text)+ ')';
  form1.Query2.ExecSql;
Если ввести корректную дату в Edit4.

P.S. Когда выкладываете проект, желательно чтобы он был полный (в архиве нет sklad_tab2.db).
Прик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод данных Ericnex Помощь студентам 0 12.04.2011 20:58
Подключение к сайту, ввод данных, отправка данных. Hichigo Общие вопросы C/C++ 0 20.07.2010 20:24
Ввод данных policedog Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 30.05.2009 21:53
Ввод данных Илья Кибель Помощь студентам 1 28.05.2008 11:12