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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2010, 21:01   #1
=Student=
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
Восклицание Запрос на добавление

Доброго времени суток. Подскажите ошибку. вот код:
ADOQuery1.Active:=False;
ADOQuery1.SQL.Text:='insert into Table1 values(1,"fd","fdgf")';
ADOQuery1.Open;
ADOQuery1.Active:=True;

Я использую sql server. Таблица состоит из трех полей "ID-int, Name-char,FIO-char". Делфи выдает ошибку:

Project Project1.exe raised exception class EOleException with message The name 'fd'is not
permitted in this context.Only constants, expressions,or variables allowed here.

Тотже код
ADOQuery1.Active:=False;
ADOQuery1.SQL.Text:='insert into Table1 values(1,2,2)';
ADOQuery1.Open;
ADOQuery1.Active:=True;
Добавляет запись, но все равно выдает ошибку:
Project Project1.exe raised expception class EDatabaseError with message 'ADOQuery1:
CommandText does not return a result set'

Последний раз редактировалось =Student=; 12.09.2010 в 21:07.
=Student= вне форума Ответить с цитированием
Старый 12.09.2010, 21:09   #2
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Ну так, не в кавычки же обрамлять данные. Используйте QuotedStr, а еще лучше - пользуйтесь параметрами.
И еще, Open используется только, если вы получаете набор данных, а у в Вашем случае надо использовать ExecSQL.
Ну и в догонку Open это тоже самое, что и Acctive := true
_Engine_ вне форума Ответить с цитированием
Старый 12.09.2010, 21:28   #3
=Student=
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию

ADOQuery1.Active:=False;
ADOQuery1.Parameters.ParamByName('p aram1').Value:=strToInt(Edit1.Text) ;
ADOQuery1.Parameters.ParamByName('p aram2').Value:=Edit2.Text;
ADOQuery1.Parameters.ParamByName('p aram3').Value:=Edit3.Text;
ADOQuery1.SQL.Text:='insert into Table1 values(: param1,: param2,: param3)';
ADOQuery1.ExecSQL;
ADOQuery1.Active:=True;

Тоже выдает ошибку
=Student= вне форума Ответить с цитированием
Старый 12.09.2010, 21:31   #4
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Я бы тоже ошибку выдал

Сначала формируете запрос, потом присваиваете параметры и уберите нафиг Active := true
_Engine_ вне форума Ответить с цитированием
Старый 12.09.2010, 21:37   #5
=Student=
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию

Спасибо ОГРОМНОЕ. Запрос работает. Только добавляет пустые строки
=Student= вне форума Ответить с цитированием
Старый 12.09.2010, 21:39   #6
=Student=
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию

Все нормально. еще раз большое спасибо!!!!
=Student= вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос на добавление Grushka Microsoft Office Access 3 03.05.2010 10:00
Запрос на добавление Insightful Microsoft Office Access 9 30.04.2010 18:17
Добавление (запрос) warshadow Microsoft Office Access 8 23.10.2009 01:15
Помогите, запрос на добавление DisaMS Microsoft Office Access 5 10.06.2008 12:39
запрос на добавление William Microsoft Office Access 3 13.07.2007 22:00