Консультация № 109288
13.11.2007, 21:29
0.00 руб.
0 2 2
Здраствуйте.

Я работаю над базой данных (это моя первая работа с базами в Delphi), и я не знаю как добавить данные в таблицу (т.е. SQL я знаю и не плохо им владею). На форме у меня уже есть: Querry,DBGrid,DataSource,Database. Как сделать так, чтобы по нажатию на кнопку из полей формы 3 добавлялись данные в таблицу? В базе поля: person_id (int), first_name(char(20)), middle_name(char(20)), last_name(char(20)), start_date (Date).

Обсуждение

Неизвестный
13.11.2007, 21:56
общий
это ответ
<font color=blue><b>!!!</b></font>
procedure button.click;
begin
query.close;
query.sql.clear;
query.sql.append(‘INSERT INTO TABLE(Field1, Field2) VALUES (‘#39 + Edit1.Text + #39‘, ‘#39 + Edit2.Text + #39‘)‘);
<s> query.exec;</s><font color=blue>query.ExecSQL;</font>
end;
// В данном примере вставляются строки
// на самом деле нужно еще проверять. чтобы EDIT‘ы не содержали апострофов
// ну и если данные неприводимы к строке, или вы уверены, что там числа и т.п.,
//можно без апострофов, то есть без #39

//Можно еще посоветовать через хранимые процедуры...
//Но это на будущее, пробуйте сначала так, опыта больше наберетесь :)<p><fieldset style=‘background-color:#EFEFEF; width:80%; border:blue 1px solid; padding:10px;‘ class=fieldset><font color=blue><i>У компонента TQuery нет метода Exec. Для выполнения SQL команд не возвращающих набор данных, применяется метод ExecSQL.</i>
-----
</font><font color=#777777 size=1><b>• Отредактировал: <a href=/info/user/425 target=_blank>sir henry</a></b> (Академик)
<b>• Дата редактирования:</b> 14.11.2007, 08:40</font></fieldset>
Неизвестный
13.11.2007, 22:41
общий
это ответ
Здравствуйте, Alex L!
Ну во первых посоветовал бы вам использовать ADOQuery гораздо больше удобства при переносе на другие компьютеры.

но по вашему вопросу можно сделать так.

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(‘INSERT INTO TABLE_NAME(first_name, middle_name,last_name,start_date) VALUES (:fn,:mn,:ln,:sd)‘);
Query1.ParamByName(‘fn‘).AsString:=Edit1.Text;
Query1.ParamByName(‘mn‘).AsString:=Edit2.Text;
Query1.ParamByName(‘ln‘).AsString:=Edit3.Text;
Query1.ParamByName(‘sd‘).AsDate:=DateTimePicker.Date;
Query1.ExecSQL;
Форма ответа