Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 261

/ вопрос решён /

Приветствую, уважаемые эксперты!
Опять нуждаюсь в вашей помощи!!!! Не получается сохранить данные в базу, программа запускается но при нажатии на кнопку Сохранить появляется ошибка : Ошибка синтаксиса в инструкции Insert Intro. Подскажите что не так делаю, вот код:

procedure TForm1.sButton10Click(Sender: TObject);
var
fields, values : string;
begin
fields := ' (Предмет, Всего, Теоритические, Лабораторные, Курсовые) ';
values := '+ sEdit3.Text +,+ sEdit4.Text + , + sEdit5.Text + , +sEdit6.Text + , + sEdit7.Text +';
if CheckBox1.Checked then
begin
fields := fields + ', Экзамены';
values := values + ', 1';
end;
ADOCommand1.CommandText:= 'insert into ' + sEdit1.text + '(' + fields + ')' + 'values (' + values + ')';
ADOCommand1.Execute;

end;

Анучин Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Анучин (статус: Посетитель)
Вопрос отправлен: 5 мая 2011, 23:11
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: corban

Здравствуйте, Анучин!
ну у вас не правильно заданы переменные:

procedure TForm1.sButton10Click(Sender: TObject);
var
fields, values : string;
begin
fields := ' (Предмет, Всего, Теоритические, Лабораторные, Курсовые) ';// - уберите скобки
values := sEdit3.Text +','+ sEdit4.Text + ', '+ sEdit5.Text + ', '+sEdit6.Text + ', '+ sEdit7.Text; // это строка должна выглядеть так, а не как в вашем коде
if CheckBox1.Checked then
begin
fields := fields + ', Экзамены';
values := values + ', 1';
end;
ADOCommand1.CommandText:= 'insert into ' + sEdit1.text + '_(' + fields + ')' + 'values (' + values + ')';// там где "_" поставьте пробел
ADOCommand1.Execute;

end;

Ответ отправил: corban (статус: 2-ой класс)
Время отправки: 6 мая 2011, 04:03
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 6 мая 2011, 21:37; участников в обсуждении: 3.
Егор

Егор (статус: 10-ый класс), 6 мая 2011, 04:03 [#1]:

есть хорошая штука - отладчик. вот отладчик бы показал, в чём ошибка
begin
  fields := ' (Предмет, Всего, Теоритические, Лабораторные, Курсовые) ';
  values := '+ sEdit3.Text +,+ sEdit4.Text + , + sEdit5.Text + , +sEdit6.Text + , + sEdit7.Text +';
  // в values будут не значения текстовых полей, а перечисления имён компонентов
  if CheckBox1.Checked then
  begin
    fields := fields + ', Экзамены'; // того лучше - это значение будет вне скобок
    values := values + ', 1';
  end;
  ADOCommand1.CommandText:= 'insert into ' + sEdit1.text + '(' + fields + ')' + 'values (' + values + ')';

если в sEdit1.text была строчка "table", то получим запрос:
'insert into table ((Предмет, Всего, Теоритические, Лабораторные, Курсовые), Экзамены)values (+ sEdit3.Text +,+
sEdit4.Text + , + sEdit5.Text + , +sEdit6.Text + , + sEdit7.Text +)';

p.s. Теоретические
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 6 мая 2011, 05:49 [#2]:

Цитата (corban):

values := sEdit3.Text +','+ sEdit4.Text + ', '+ sEdit5.Text + ', '+sEdit6.Text + ', '+ sEdit7.Text; // это строка должна выглядеть так, а не как в вашем коде

лучше сделать так:
values := QuotedStr(sEdit3.Text) +','+ QuotedStr(sEdit4.Text) + ', '+ QuotedStr(sEdit5.Text) + ', '+QuotedStr(sEdit6.Text) + ', '+ QuotedStr(sEdit7.Text);
Анучин

Анучин (статус: Посетитель), 6 мая 2011, 20:50 [#3]:

corban: Спасибо большое добавил ваши исправления, и строку котроую посоветовал Мережников Андрей и все заработало!!!! еще раз спасибо!!!!
Анучин

Анучин (статус: Посетитель), 6 мая 2011, 21:37 [#4]:

И вот еще один вопрос, чтоб не начинать новую тему..... у меня на форме не один CheckBox а 3, CheckBox1 добовляет в базу цисло 1, CheckBox2 добовляет цисло 2, ну и CheckBoх3 добовляет цисло 3, так вот как сделать чтобы при нажатии 2-х или всех 3-х CheckBoх-ов в базу в одну ячейку добавлялась запись (1,2,3) или (1,2) или (1,3)???

9 мая 2011, 00:07: Статус вопроса изменён на решённый (изменил автор вопроса — Анучин)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:53
Выполнено за 0.03 сек.