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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2007, 07:12   #1
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию Добавление в sql-БД

Люди, помогите. Нужно при нажатии на кноку заносить данные в БД.
Значит так, на форме имеется кнопка "добавить" и 2 компонента Edit.
В БД имеется 2 поля "id"(тип int) и "name"(тип varchar(10)). Нужно из Edit1 добавть данные (перевод из сторки в число) в поле "id" и из Edit2 в поле "name" при ножатии на кнопку. Подключение к серверу проходит нормально, выборка данных осуществляется. ЖДУ ваших предложений
antoniosm вне форума Ответить с цитированием
Старый 05.09.2007, 09:37   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

А в чем проблема?

Query.Close;
Query.SQL.Clear;
Query.SQL.Add('insert into TABLE (id,name) Values ( "'+
Edit1.Text+'","'+
Edit2.Text+
'")');
Query.ExecSQL;
_SERGEYX_ вне форума Ответить с цитированием
Старый 05.09.2007, 11:22   #3
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

Сергей, спасибо. Только ведь в БД у поля id стоит тип int, а в поле Edit1 любые вводимые симвоы принимают тип Text. Вот тут-то головнячок-с выскакивает. подскажите пожалста.
antoniosm вне форума Ответить с цитированием
Старый 05.09.2007, 11:53   #4
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

begin
ADOQuery1.SQL.Add('insert into mytab12 (id, name) values ("'+Edit1.Text+'","'+Edit2.Text+'") ');
ADOQuery1.ExecSQL;
end;

вот часть кода, который имеется у меня, но не работает, как и тот, который приводил Сергей. в чем ошибка? при добавлении значений в БД говорит, что не совпадают типы.
antoniosm вне форума Ответить с цитированием
Старый 05.09.2007, 12:54   #5
JordanS
Пользователь
 
Регистрация: 28.08.2007
Сообщений: 10
По умолчанию

Если поле в БД типа integer, то при использовании insert ...
значение не надо указывать в апострофах.
Предварительно надо значение Edit1.Text преобразовать в integer
можно использовать функцию StrToInt()
begin
ADOQuery1.SQL.Add('insert into mytab12 (id, name) values ('
+strtoint(Edit1.Text)+',"'+Edit2.Text+'")');
ADOQuery1.ExecSQL;
end;

Естественно необходимо сделать проверку на ввод в Edit1, т.е. ввели цифру или нет, иначе будет вылетать ошибка

Последний раз редактировалось JordanS; 05.09.2007 в 12:59.
JordanS вне форума Ответить с цитированием
Старый 05.09.2007, 14:00   #6
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

strtointDef(Edit1.Text, 0)
и ошибка не вылетит )
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 05.09.2007, 14:17   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
поля id стоит тип int, а в поле Edit1 любые вводимые симвоы
Оптимальный вариант - запретить вообще в edit1 писать все, кроме цифр.
if edit1.text = '' then edit1.text := '0';
_SERGEYX_ вне форума Ответить с цитированием
Старый 05.09.2007, 20:50   #8
rubi
Пользователь
 
Регистрация: 01.09.2007
Сообщений: 35
По умолчанию

Может вообще сделать через параметры:
begin
ADOQuery1.SQL.Add('insert into mytab12 (id, name) values (:id_par,:name_par)');
ADOQuery1.ExecSQL;
end;
а уже в коде дэлфы сделать так:
ADOQuery1.Parameters.ParamByName(:i d_par).Value:=StrToInt(Edit1.Text);
ADOQuery1.Parameters.ParamByName(:n ame_par).Value:=Edit2.Text;
ADOQuery1.ExecSQL;
И вообще я бы рекомендовал для осуществления операций с БД, если используешь ADO, делать все через ADOCommand (можно ADODataSet).
rubi вне форума Ответить с цитированием
Старый 06.09.2007, 01:37   #9
Tokolist
Пользователь
 
Аватар для Tokolist
 
Регистрация: 04.09.2007
Сообщений: 19
По умолчанию

Ну...
есть такие компоненты как TSpinEdit или TDBNumberEditEh (EhLib) или на худой конец

Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key < '0') or (Key > '9') then
    Key := #0;
end;
Tokolist вне форума Ответить с цитированием
Старый 06.09.2007, 07:59   #10
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

всем большое спасибо за помощь
antoniosm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление в БД Dissonance БД в Delphi 3 05.06.2008 21:22
Добавление в 2 таблицы Dissonance БД в Delphi 5 04.06.2008 23:54
Добавление Holodok БД в Delphi 1 09.05.2008 18:01
запрос на добавление William Microsoft Office Access 3 13.07.2007 22:00
Добавление к pchar EdNovice Общие вопросы Delphi 2 15.04.2007 17:00