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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2008, 00:35   #1
Максим_Леонидович
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 49
По умолчанию ADOQery

Помогите пожалуйста разобраться.
Делаю первую в жизни программу в дельфи
Можно ли осуществить через ADOQery SQL Запросы типа INSERT INTO ...
И если можно, то как?
Максим_Леонидович вне форума Ответить с цитированием
Старый 16.08.2008, 00:43   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

можно.
метод AdoQuery.ExecSQL F1
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.08.2008, 01:00   #3
Максим_Леонидович
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 49
По умолчанию

Я бы рад почитать что-нибудь внятное по F1
Но вылазит сообщение типа нет такого раздела.
Максим_Леонидович вне форума Ответить с цитированием
Старый 16.08.2008, 09:40   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а вы F1 нажимали на слове ExecSQL ? а вообще помощь есть? если выделить AdoQuery и нажать F1 - отрывается что-то? если нет - то Вам будет тяжело - без помощи в Дельфи иногда тяжко.. ;-(

а, конкретно по ExecSQL хелп (из Delphi 5)
Цитата:
Executes the SQL statement for the ADO query.

function ExecSQL: Integer;

Description

Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).

Note: For SELECT statements, call Open instead of ExecSQL or set the Active property to True.

Provide any input parameters in the Parameters property. At design-time, a developer can provide parameters using the Parameters Editor. At runtime an application must access the Parameters property directly, identifying particular parameters by their ordinal position in the SQL statement.

To speed performance, an application should ordinarily prepare the query by setting the Prepared property to True before calling ExecSQL for the first time.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.08.2008, 00:49   #5
Максим_Леонидович
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 49
По умолчанию

Замучился вовсе.
Второй день никак не придумать.
Подскажите кто нибудь как правильно написать через ADOQuery
Код:
  ADOQuery.SQL.Clear;
  ADOQuery.SQL.ADD('INSERT INTO dbtable');
  ADOQuery.SQL.ADD('(id_rec, name)');
  ADOQuery.SQL.ADD('VALUES ('+''''+', +'''+'текст'+'''+')');
  ADOQuery.ExecSQL;
Почему то не работает?

Только громко не смейтесь. Первый раз пытаюсь использовать СКЛ для редактирования данных в БД
Максим_Леонидович вне форума Ответить с цитированием
Старый 17.08.2008, 10:43   #6
Mitriy
Пользователь
 
Регистрация: 08.07.2007
Сообщений: 47
По умолчанию

Чтобы ты не писал в ...ADD('....') у тя всегда должна получится в итоге строка. Для проверки можно поставить туда переменную строки и генерерить ее
Код:
Var SQLTxt : String;
....

SQLTxt := 'insert into dbtable (id_rec,name) values (123,'+char(39)+'qwert'+char(39)+')';
//если поле Name у тя текстовое оно должно заключаться в одинарные 
//ковычки, также если у тя поле id_rec - автоинкримент то оно в запросе 
//учавствовать не должно
//Пока трнеруешся сделай 
ShowMessage(SQLTxt); //чтобы у видеть, что у тя получилось в итоге
//Ну и дальше 
with ADOQuery do
begin
      SQL.Clear;
      SQL.ADD(SQLTxt);
      SQL.ExecSQL;
end;
Mitriy вне форума Ответить с цитированием
Старый 17.08.2008, 13:26   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Mitriy. +1
добавлю, что в sysutils есть полезная функция: QuotedStr(S:string):string;
если использовать её строчка выглядит проще и понятнее:
Код:
...
SQLTxt := 'insert into dbtable (id_rec,name) values (123,'+QuotedStr('qwert')+')';
...
а остальное всё в точку!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.08.2008, 15:21   #8
Максим_Леонидович
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 49
По умолчанию

Большое, спасибо сейчас попробую.
Максим_Леонидович вне форума Ответить с цитированием
Ответ


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