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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 22:21   #1
Morfius01
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 12
По умолчанию Добавление данных в таблицу через SQL

Мне нужно добавить в базу в нужную информацию в зависимости от выбранного radiobutton'а. Но не выходит, выдает ошибку. Вот текст процедуры, я только осваиваю работу с БД и sql, так что нужна помощь
Код:
procedure TForm3.Button5Click(Sender: TObject);
begin
form3.ADOQuery2.SQL.add('SELECT * FROM score');
form3.adoquery2.SQL.Add('where [Код студента]='+Kst);
form3.adoquery2.SQL.Add('where [Предмет]='+predmet);
  form3.ADOQuery2.Open;
  form3.adoquery2.Insert;
  if form3.RadioButton1.checked=true then form3.ADOquery2.FieldByName(form3.ComboBox2.text).AsString:='3';
  if form3.RadioButton2.checked=true then form3.ADOquery2.FieldByName(form3.ComboBox2.text).AsString:='4';
  if form3.RadioButton3.checked=true then form3.ADOquery2.FieldByName(form3.ComboBox2.text).AsString:='5';
  if form3.RadioButton4.checked=true then form3.ADOquery2.FieldByName(form3.ComboBox2.text).AsString:='Зачет';
  if form3.RadioButton5.checked=true then form3.ADOquery2.FieldByName(form3.ComboBox2.text).AsString:='Не зачет';
  end;
я понял что я неправильно задаю where, не могу найти как правильно задать несколько условий.

Последний раз редактировалось Stilet; 19.12.2010 в 11:55.
Morfius01 вне форума Ответить с цитированием
Старый 18.12.2010, 22:24   #2
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

Код:
procedure TForm3.Button5Click(Sender: TObject);
begin
form3.ADOQuery2.SQL.add('SELECT * FROM score');
form3.adoquery2.SQL.Add('where [Код студента]='+Kst+' and [Предмет]='+predmet);
form3.ADOQuery2.active:=true;
form3.adoquery2.Insert;
if form3.RadioButton1.checked=true then form3.ADOquery2.FieldByName(form3.C omboBox2.text).AsString:='3';
if form3.RadioButton2.checked=true then form3.ADOquery2.FieldByName(form3.C omboBox2.text).AsString:='4';
if form3.RadioButton3.checked=true then form3.ADOquery2.FieldByName(form3.C omboBox2.text).AsString:='5';
if form3.RadioButton4.checked=true then form3.ADOquery2.FieldByName(form3.C omboBox2.text).AsString:='Зачет';
if form3.RadioButton5.checked=true then form3.ADOquery2.FieldByName(form3.C omboBox2.text).AsString:='Не зачет';
form3.adoquery2.post;
end;
dosha вне форума Ответить с цитированием
Старый 18.12.2010, 22:50   #3
Morfius01
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 12
По умолчанию

Выдает ошибку
"First chance exception at $75749617. Exception class EOleException with message
'Параметр МОТС(это название выбранного предмета) не имеет значения по умолчанию'. Process Project1.exe (5792)"
((
Morfius01 вне форума Ответить с цитированием
Старый 18.12.2010, 23:03   #4
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

извини недоглядел
Код:
procedure TForm3.Button5Click(Sender: TObject);
begin
form3.ADOQuery2.SQL.add('SELECT * FROM score');
form3.adoquery2.SQL.Add('where [Код студента]='+Kst+' and [Предмет]='+predmet);
form3.ADOQuery2.active:=true;
form3.adoquery2.Insert;
if form3.RadioButton1.checked=true then form3.ADOquery2.Fields[0].AsString:='3';
if form3.RadioButton2.checked=true then form3.ADOquery2.Fields[0].AsString:='4';
if form3.RadioButton3.checked=true then form3.ADOquery2.Fields[0].AsString:='5';
if form3.RadioButton4.checked=true then form3.ADOquery2.Fields[0].AsString:='Зачет';
if form3.RadioButton5.checked=true then form3.ADOquery2.Fields[0].AsString:='Не зачет';
form3.adoquery2.post;
end;
где Fields[0] номер колонки
dosha вне форума Ответить с цитированием
Старый 18.12.2010, 23:19   #5
Morfius01
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 12
По умолчанию

Цитата:
где Fields[0] номер колонки
мне нужно добавлять именно в ту колонку, имя которой я выбираю в комбобоксе.
и красным он после ошибки выделяет строку
form3.adoquery2.Insert;
Morfius01 вне форума Ответить с цитированием
Старый 18.12.2010, 23:28   #6
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
form3.ADOQuery2.SQL.clear;
form3.ADOQuery2.SQL.add('SELECT * FROM score');
form3.adoquery2.SQL.Add('where [Код студента]='+Kst+' and [Предмет]='+predmet);
form3.ADOQuery2.active:=true;
form3.adoquery2.Insert;
if form3.RadioButton1.checked=true then form3.ADOquery2.Fields[form3.ComboBox2.itemindex].AsString:='3';
if form3.RadioButton2.checked=true then form3.ADOquery2.Fields[form3.ComboBox2.itemindex].AsString:='4';
if form3.RadioButton3.checked=true then form3.ADOquery2.Fields[form3.ComboBox2.itemindex].AsString:='5';
if form3.RadioButton4.checked=true then form3.ADOquery2.Fields[form3.ComboBox2.itemindex].AsString:='Зачет';
if form3.RadioButton5.checked=true then form3.ADOquery2.Fields[form3.ComboBox2.itemindex].AsString:='Не зачет';
form3.adoquery2.post;
end;
есль не робит то стучи в асю 631694469

Последний раз редактировалось dosha; 18.12.2010 в 23:44.
dosha вне форума Ответить с цитированием
Старый 18.12.2010, 23:57   #7
Morfius01
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 12
По умолчанию

таже ошибка. он прерывает выполнение на
form3.adoquery2.Insert;
Morfius01 вне форума Ответить с цитированием
Старый 19.12.2010, 00:44   #8
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

НЕ все методы TADOtable подходят к TadoQury.
Хотите добавить запись пишите запрос на добавление
Код:
INSERT INTO <имя таблицы>(<имя поля1>,<имя поля2>,<имя поля3>,<имя поля N>)
VALUES(<значение1>,<значение2>,<значение3>,<значениеN>)
Это распространеннная ошибка если работали только с компанентами типа TTABLE
Придётся изучать SQL если в начале это может показатся неудобным, то при практическом примененеи это ощущение быстро уйдёт, в работе со SQL таятся огромные возможности при работе с БД.
vovk вне форума Ответить с цитированием
Старый 19.12.2010, 01:20   #9
Morfius01
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 12
По умолчанию

попробовал убрать запрос по предмету, оставил только по значению kst, и программа не выдает ошибки при работе. Но, странно, я открываю таблицу после добавления оценки, и вижу, что он добавляет, как ни крути, в самый последний ряд нужного столбца, а не в те ряды, которые, по идее, должны были быть выбраны в sql запросе.
vovk
буду благодарен, если подгонишь мою программу под твой вариант написания
Morfius01 вне форума Ответить с цитированием
Старый 19.12.2010, 01:40   #10
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

Это не мой вариант, это просто SQL
INSERT это добавление записи, для обновления записи нужно использовать UPDATE, синтаксис
Код:
UPDATE <имя таблицы> SET <имя поля> = <новое значение>
WHERE <выбор записей которые нужно обновить к примеру ID= 10 (обновтся поле <имя поля> у записи где поле с именем id равно 10)>
Вам будет полезно почитать про SQL иначе на каждое своё новое действие вы будете создавать новую тему, литературу можно посмотреть по это ссылке, или поискать в интернете, или купить книжку

Последний раз редактировалось vovk; 19.12.2010 в 01:44. Причина: поменял только оформление, ничего больше
vovk вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление колонки в таблицу (SQL) Смородинка Microsoft Office Access 3 28.04.2011 21:27
Добавление данных в базу через LINQ to SQL hk47 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 5 15.11.2010 17:44
SQL. Добавление в таблицу записи Dushkanyara БД в Delphi 0 18.10.2010 13:59
Добавление данных в таблицу через Delphi bablzz БД в Delphi 7 08.10.2010 00:38
Добавление столбца в таблицу с помощью SQL andirock2112 БД в Delphi 15 11.04.2009 09:15