procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.close;
ADOQuery1.SQL.text:='insert into veresiye (product,price,piece,total)
VALUES (:par0,:par1,:par2,:par3)';
ADOQuery1.Parameters.ParamByName('par0').Value:=Edit1.Text;
ADOQuery1.Parameters.ParamByName('par1').Value:=Edit2.Text;
ADOQuery1.Parameters.ParamByName('par2').Value:=Edit3.Text;
ADOQuery1.Parameters.ParamByName('par3').Value:=Edit4.Text;
ADOQuery1.Open;
ADOQuery1.ExecSQL;
end;
and I get this error message:
Adoquery1: CommandText does not return a result set
Why do I get this error and how can I fix it?
J…
31k6 gold badges66 silver badges143 bronze badges
asked May 26, 2016 at 11:56
6
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).ExecSQL returns an integer value reflecting the number of rows
affected by the executed SQL statement. Note: For SELECT statements,
call Open instead of ExecSQL or set the Active property to true. To
speed performance, an application should ordinarily prepare the query
by setting the Prepared property to true before calling ExecSQL for
the first time.
Source : http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/ADODB_TADOQuery_ExecSQL.html
To insert values in table use :
ADOQuery1.close;
ADOQuery1.SQL.text:='insert into veresiye (product,price,piece,total)
VALUES (:par0,:par1,:par2,:par3)';
ADOQuery1.Parameters.ParamByName('par0').Value:=Edit1.Text;
ADOQuery1.Parameters.ParamByName('par1').Value:=Edit2.Text;
ADOQuery1.Parameters.ParamByName('par2').Value:=Edit3.Text;
ADOQuery1.Parameters.ParamByName('par3').Value:=Edit4.Text;
ADOQuery1.ExecSQL;
To get values from table use:
ADOQuery1.close;
ADOQuery1.SQL.text:='select * from veresiye';
ADOQuery1.Open;
answered May 26, 2016 at 12:17
Val MarinovVal Marinov
2,71517 silver badges22 bronze badges
You should simply remove the call to
ADOQuery1.Open;
Open
is used to open the dataset returned by the query. This is also equivalent to setting ADOQuery1.Active := true
. In this case, an INSERT
statement does not return a dataset so there is nothing to open.
ExecSQL
is used to execute statements that do not return a result dataset so that is all you need to use here.
answered May 26, 2016 at 12:03
J…J…
31k6 gold badges66 silver badges143 bronze badges
To insert values in table :
ADOQuery1.Close;
ADOQuery1.SQL.text:='insert into veresiye (product,price,piece,total)
VALUES (:par0,:par1,:par2,:par3)';
ADOQuery1.Parameters.ParamByName('par0').Value:=Edit1.Text;
ADOQuery1.Parameters.ParamByName('par1').Value:=Edit2.Text;
ADOQuery1.Parameters.ParamByName('par2').Value:=Edit3.Text;
ADOQuery1.Parameters.ParamByName('par3').Value:=Edit4.Text;
Try
ADOQuery1.ExecSQL;
except on E: Exception do
MessageDlg(E.Message,mtError,[mbOK],0);
End;
answered Jun 1, 2016 at 9:17
← →
Kolan ©
(2006-10-25 23:59)
[0]
Здравствуйте,
Делаю такой запрос:
S := "INSERT INTO dbo.Operators VALUES ("
+#39+ SurName +#39+ "," +#39+ Name +#39+ "," +#39+ PatronymicName +#39+ ")";
BaseManager.ExecQuery(S);
И соответственно:
function TBaseManager.ExecQuery(Query: string): Boolean;
begin
FADODataSet.Active := False;
FADODataSet.CommandText := Query;
FADODataSet.Active := True;
end;
Получаю ошибку как в сабже. Прочел на королевстве что для ADOQuery
есть ExcecSQL
. А как быть с FADODataSet
?
← →
DrPass ©
(2006-10-26 01:04)
[1]
Никак. Он предназначен для выборки, а не для вставки данных, о чем тебе и пытается сказать. Вставляй с помощью ADOQuery, что тебе мешает-то?
← →
evvcom ©
(2006-10-26 08:28)
[2]
> [0] Kolan © (25.10.06 23:59)
> +#39+ SurName +#39+ «,» +#39+ Name +#39+
Вот любители извращаться! #39 — это что? Апостроф? А нормально написать не судьба? Чтобы читаемо было:VALUES (""" + SurName + """,""" +
Но еще более читабельно будет с параметрами:"... VALUES (:SurName, :Name, :PatronymicName)";
Не так ли?
← →
Anatoly Podgoretsky ©
(2006-10-26 08:56)
[3]
Сколько раз говорили, забудьте что есть такая штука как Query, она же только в заблуждения вводит, поубивал бы Борланд, везде понавпихивали свои Tabe, Query, StoredProc — народу мозги затуманили.
Для базовой работы с базами нужны только две вещи — Dataset для запросов возвращающих набор данных или набор записей и Command для всего остального.
Вот остальное можно только выполнить, а слово это переводится на ангельский как Execute
← →
Anatoly Podgoretsky ©
(2006-10-26 08:57)
[4]
> Вот любители извращаться!
Любители шагать по граблям
Параметры
Параметры
Параметры
← →
DrPass ©
(2006-10-26 09:50)
[5]
> забудьте что есть такая штука как Query, она же только в
> заблуждения вводит
Глупости. ADOQuery ничем не отличается от ADODataSet, кроме нескольких свойств «для совместимости» и возможности исполнять не возвращающие НД команды. Кто сомневается, может посмотреть исходник в ADODB.pas
← →
Anatoly Podgoretsky ©
(2006-10-26 12:03)
[6]
Ты думаешь, что не вводит, наблюдение за форумами этого не подтверждает, при том желательно пройтись по всему приведеному списку.
Крайний случай заблуждений в еоде выглядит такQ.Active := True;
Q.ExecSQL;
Q.Open;
Это реальный код из форумов.
← →
Плохиш ©
(2006-10-26 13:51)
[7]
> Крайний случай заблуждений в еоде выглядит так
> Q.Active := True;
> Q.ExecSQL;
> Q.Open;
> Это реальный код из форумов.
Так это же логично
Q.Active := True; — Сделать кАмпАненту активной
Q.ExecSQL; — выполнить запуздыренный запрос
Q.Open; — открыть набор данных
Хорошо, что хоть в такой последовательности
> Kolan © (25.10.06 23:59)
> Здравствуйте,
> Делаю такой запрос:
>
> S := «INSERT INTO dbo.Operators VALUES («
> +#39+ SurName +#39+ «,» +#39+ Name +#39+ «,» +#39+ PatronymicName
> +#39+ «)»;
Представляешь, что будет, если хотя бы в одной из этих переменных будет свой апостров?
← →
Ketmar ©
(2006-10-26 14:27)
[8]
>[7] Плохиш(c) 26-Oct-2006, 13:51
>Представляешь, что будет, если хотя бы в одной из этих
>переменных будет свой апостров?
от «ничего страшного» до «ой, а почему у меня в базе нет ничего?» %-))
← →
Shirson ©
(2006-10-26 15:58)
[9]
Отказываться от очень удобного компонента, из-за того, что некоторые не умеют им пользоваться? Нах такое счастье.
ADOQuery самый удобный. Всё описанно в хелпе и ненужно в обход его изобретать собственную логику использования компонентов.
← →
Anatoly Podgoretsky ©
(2006-10-26 16:18)
[10]
Отказываться от очень удобного компонента
Чего в нем удобного по сравнению с Dataset/Command?
Кроме наличия перегрузок и некоторых ошибок, на которые я к счастью не нарывался, но информацию по ним приводил Шикник в Базах.
Зачем изучать несколько технологий и ломать голову, когда есть прямые, а не костыли над ними?
Применять конечно имеешь право и никто тебе не судья, но упорствовать в этом не является признаком профессионализма.
← →
Германн ©
(2006-10-26 16:27)
[11]
> но информацию по ним приводил Шикник в Базах.
А если Николай обидится?
← →
Anatoly Podgoretsky ©
(2006-10-26 16:32)
[12]
> А если Николай обидится
С чего бы, он придерживает такой же позиции.
А то что не захотел переключать раскладку, то за такое он не обижается. А вот если он пожелает подключиться и в очередной раз захочет выразить свое ФИ, правда я бы не стал, уже надоело это разжевывать в Базах.
← →
Германн ©
(2006-10-26 16:41)
[13]
> Anatoly Podgoretsky © (26.10.06 16:32) [12]
>
>
> > А если Николай обидится
>
> С чего бы, он придерживает такой же позиции. А то что не захотел переключать раскладку, то за такое он не обижается.
Дык я не про позицию и не про раскладку, а про вторую букву в нике
← →
DrPass ©
(2006-10-26 16:57)
[14]
> Anatoly Podgoretsky © (26.10.06 16:18) [10]
> Чего в нем удобного по сравнению с Dataset/Command?
> Кроме наличия перегрузок и некоторых ошибок
Никаких перегрузок и ошибок там нет (по крайней мере, по сравнению с ADODataSet) — TADOQuery прямой наследник TCustomADODataset + свойства SQL, RowsAffected и метод ExecSQL, и ничего боле. А удобство — очевидно. Унифицированный код, который при необходимости можно легко портировать на другой тип источников данных, да и просто новичку освоить легче, по любой книге о Delphi + BDE
← →
Anatoly Podgoretsky ©
(2006-10-26 17:00)
[15]
Как это нет, а SQL типа strings
← →
DrPass ©
(2006-10-26 17:36)
[16]
Не считается
← →
Anatoly Podgoretsky ©
(2006-10-26 17:40)
[17]
Наоборот полный зачет, и это не углубляясь во внутренне устройство.
← →
DrPass ©
(2006-10-26 17:48)
[18]
А чем оно плохо? Используется для совместимости с другими Query, и просто копируется в CommandText датасета
← →
Anatoly Podgoretsky ©
(2006-10-26 18:03)
[19]
Не правда, это дополнительно к уже занятой под strings памяти, а она прожорливая.
> Используется для совместимости с другими Query
И не только Query, но и Table и StoredProc
Позор Борланду, что они творят с начинающими программистами, а потом мы удивляемся откуда такие берутся..
← →
Kolan ©
(2006-10-26 18:36)
[20]
> Вот любители извращаться!
Сделал как придумал. Намеренно запостил, чтобы узнать как правильно.
Это самый лучьшеий вариант: VALUES (:SurName, :Name, :PatronymicName)";
?
Параметры
Параметры
Параметры
Не понял?
> Вставляй с помощью ADOQuery, что тебе мешает-то?
Anatoly Podgoretsky и мешает
Сделал еще одну процедурку: procedure TBaseManager.ExecCommand(Command: string);
begin
FADOCommand.CommandText := Command;
FADOCommand.Execute;
end;
Ей и пользовался — работает.
← →
Kolan ©
(2006-10-26 18:39)
[21]
> VALUES (:SurName, :Name, :PatronymicName)
несработало. в строке получились не переменные а именно SurName, Name, PatronymicName
← →
Anatoly Podgoretsky ©
(2006-10-26 18:40)
[22]
Неправда не мешаю, я же сказал — это личное горе каждого, я предупреждаю от неверных шагов, чтобы потом не так больно было.
← →
Anatoly Podgoretsky ©
(2006-10-26 18:42)
[23]
> несработало. в строке получились не переменные а именно
> SurName, Name, PatronymicName
У тебя ошибка в программе.
← →
Kolan ©
(2006-10-26 18:43)
[24]
> У тебя ошибка в программе.
Да это я понялл:)procedure TOperatorManager.AddNewOperator(SurName, Name, PatronymicName: string;
BaseManager: TBaseManager);
var
S: string;
begin
S := "INSERT INTO dbo.Operators VALUES (:SurName, :Name, :PatronymicName)";
BaseManager.ExecCommand(S);
end;
Как правильно записать?
← →
Kolan ©
(2006-10-26 18:57)
[25]
> (:SurName, :Name, :PatronymicName
Где этот синтаксис описан? В справке протые примеры: Select * From Table
← →
Kolan ©
(2006-10-26 19:28)
[26]
> S := «INSERT INTO dbo.Operators VALUES («
> +#39+ SurName +#39+ «,» +#39+ Name +#39+ «,» +#39+ PatronymicName
> +#39+ «)»;
Так оставил, только потом не обзывайтесь
← →
Ketmar ©
(2006-10-26 19:30)
[27]
>[26] Kolan(c) 26-Oct-2006, 19:28
>Так оставил, только потом не обзывайтесь
а мы и не будем. сервер будет.
← →
Kolan ©
(2006-10-26 19:32)
[28]
> [27] Ketmar © (26.10.06 19:30)
> >[26] Kolan(c) 26-Oct-2006, 19:28
> >Так оставил, только потом не обзывайтесь
> а мы и не будем. сервер будет.
Не ну как делать? (:SurName
не то тут что-то. Или я не ясно выразился?
← →
Ketmar ©
(2006-10-26 19:35)
[29]
>[28] Kolan(c) 26-Oct-2006, 19:32
>Не ну как делать?
например, взять твой вариант. только «обернуть» +...
в вызовы какой-нибудь своей функции, которая обработает и «обезопасит» одинарные кавычки в строке.
← →
Kolan ©
(2006-10-26 19:41)
[30]
> например, взять твой вариант. только «обернуть» +… в вызовы
> какой-нибудь своей функции, которая обработает и «обезопасит»
> одинарные кавычки в строке.
Это я все могу. Как двоеточиями пользоваться?
Если писать так:procedure TOperatorManager.AddNewOperator(SurName, Name, PatronymicName: string;
BaseManager: TBaseManager);
var
S: string;
begin
S := "INSERT INTO dbo.Operators VALUES (:SurName, :Name, :PatronymicName)";
BaseManager.ExecCommand(S);
end;
То в S и будет "INSERT INTO dbo.Operators VALUES (:SurName, :Name, :PatronymicName)"
.
А я хочу чтобы вместо SurName была фамилия переданная как параметр.
Как работает мой вариант со склйкой я понимаю, а как пользоваться «:» — нет.
← →
Ketmar ©
(2006-10-26 19:49)
[31]
>[30] Kolan(c) 26-Oct-2006, 19:41
ты это… подумай немного. например о том, что классы — они не в курсе твоих переменных. а также о том, что параметры надо ручками потом прописывать. разница в том (если грубо), что можно сконструировать запрос один раз, а потом задавать параметры без пересоздания строки. но задавать всё равно надо руками. это вам не VBA. %-)
← →
Kolan ©
(2006-10-26 20:00)
[32]
> например о том, что классы — они не в курсе твоих переменных.
> а также о том, что параметры надо ручками потом прописывать
Понял.
> что параметры надо ручками потом прописывать
Дык нафиг эти «:»:( Может свойство Parametrs тут нужно? Или как?
Честно чувствую себя дураком..
[2] evvcom © (26.10.06 08:28)
СказалНо еще более читабельно будет с параметрами:
"... VALUES (:SurName, :Name, :PatronymicName)";
Не так ли?
Согласен это читабельнее, но как это использовать?
← →
Ketmar ©
(2006-10-26 20:06)
[33]
Query2: TQuery;
...
Query2.SQL.Clear;
Query2.SQL.Add("INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION)");
Query2.SQL.Add("VALUES (:Name, :Capital, :Population)");
Query2.Params[0].AsString := "Liechtenstein";
Query2.Params[1].AsString := "Vaduz";
Query2.Params[2].AsInteger := 420000;
Query2.ExecSQL;
(ц) справка
← →
saxon
(2006-10-26 20:22)
[34]
> Ketmar © (26.10.06 20:06) [33]
->
> Kolan © (26.10.06 18:36) [20]
> > Вставляй с помощью ADOQuery, что тебе мешает-то?
> Anatoly Podgoretsky и мешает
← →
Kolan ©
(2006-10-26 20:23)
[35]
> [33] Ketmar © (26.10.06 20:06)
А вот как.. Ясно, благодарю…
← →
Ketmar ©
(2006-10-26 20:26)
[36]
>[34] saxon 26-Oct-2006, 20:22
это просто пример работы с параметрами. взят первый попавшийся под руку класс. идея была — дать направления для раскопок. %-)
← →
saxon
(2006-10-26 20:27)
[37]
> Ketmar © (26.10.06 20:26) [36]
Я ж не против, просто смешно получилось
← →
Ketmar ©
(2006-10-26 20:28)
[38]
>[37] saxon 26-Oct-2006, 20:27
>Я ж не против, просто смешно получилось
отмаз: а у меня не ADO. вот.
Fotttiniya 2 / 2 / 0 Регистрация: 24.01.2011 Сообщений: 34 |
||||
1 |
||||
23.04.2011, 21:29. Показов 9723. Ответов 7 Метки нет (Все метки)
Приветствую вас господа программисты!ADOQuery2:CommandText does not return a result set- ошибка при попытке вывода отчета через RaveReport. База SQL Server приложение на delphi7.
при предворительном просмотре отчета в RaveReporte поля из этой таблицы не отображаются, со всех других отображаются… Добавлено через 23 часа 13 минут
0 |
1263 / 706 / 62 Регистрация: 21.12.2009 Сообщений: 2,255 |
|
24.04.2011, 05:18 |
2 |
дело то в том что запрос ADOQuery2 и запрос QShum-одно и то же Если действительно эти запросы одинаковы, то обратите внимание, запрос не селективный (у Вас прописан INSERT, а не SELECT). Такой запрос не создает набора данных и именно такое сообщение Вы и получили CommandText does not return a result set
1 |
2 / 2 / 0 Регистрация: 24.01.2011 Сообщений: 34 |
|
24.04.2011, 18:04 [ТС] |
3 |
Если действительно эти запросы одинаковы, то обратите внимание, запрос не селективный (у Вас прописан INSERT, а не SELECT). Такой запрос не создает набора данных и именно такое сообщение Вы и получили как же это исправить? тут без INSERTa никак.. может можно его потом как то переделать?
0 |
SAMZ 1263 / 706 / 62 Регистрация: 21.12.2009 Сообщений: 2,255 |
||||
24.04.2011, 19:31 |
4 |
|||
Fotttiniya, Что и когда исправлять нужно решать в соостветствии с логикой работы приложения, но надо понимать, что если в какой-то момент времени в программе срабатывает
то к этому моменту в этом объекте обязан быть SELECT а не INSERT
2 |
2 / 2 / 0 Регистрация: 24.01.2011 Сообщений: 34 |
|
24.04.2011, 19:45 [ТС] |
5 |
Большое спасибо,SAMZ! сейчас буду пробывать
0 |
0 / 0 / 0 Регистрация: 27.02.2013 Сообщений: 35 |
|
16.07.2013, 11:26 |
6 |
Уважаемый SAMZ, Помогите пожалуйста с вычисляемыми ячейками. Есть .mdb . Подключение такое ADOConnection->ADOquery->dbgrid.
0 |
xxbesoxx 1134 / 615 / 129 Регистрация: 13.02.2009 Сообщений: 3,542 |
||||||||
16.07.2013, 22:23 |
7 |
|||||||
Приветствую вас господа программисты!ADOQuery2:CommandText does not return a result set- ошибка при попытке вывода отчета через RaveReport. База SQL Server приложение на delphi7.
при предворительном просмотре отчета в RaveReporte поля из этой таблицы не отображаются, со всех других отображаются… Добавлено через 23 часа 13 минут
0 |
669 / 559 / 242 Регистрация: 26.11.2012 Сообщений: 2,191 |
|
17.07.2013, 09:49 |
8 |
xxbesoxx, Я думаю с ответом немного задержался )))) так годика на 2 ))))
0 |
|
|
|
ADOQuery — выдает ошибку
, ADOQuery1:CommandText does not return a result set.
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Соединил Вelphi7.0 c MySQL5.1 через driver ODBC. Вопрос: Что это означает и стоит ли росстраиваться по этому поводу или просто взять данный кусок в try … Exept end; и забыть про него? |
Anatoly Podgoretsky |
|
Не возвращает, а ты наверно используешь Open. |
ViktorXP |
|
не открыва (ADOQuery1.Open) а просто выполняй запрос (ADOQuery1.ExecSQL;). и тогда будет все нормально |
kiber0net0 |
|
ViktorXP спасибо , все работает Добавлено |
ViktorXP |
|
Цитата kiber0net0 @ Кстати, я так понимаю ошибка возникает потому что нельзя возратить никакого результат. процедура Open отправляет данные и ждет результат. по истечению времени не дождавшись результата возвращает ошибку. ExecSQL — не ждет, она просто выполняет запрос. |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Базы данных
- Следующая тема
[ Script execution time: 0,0428 ] [ 16 queries used ] [ Generated: 22.09.23, 11:18 GMT ]
Форум программистов Vingrad
Поиск: |
|
CommandText does not return a result set, ни с того, ни с сего.. |
Опции темы |
DDX |
|
||
Шустрый Профиль
Репутация: 5
|
странная проблема: ничего не менялось, ни программа, ни сами хранимки. сижу, ломаю голову, отчего это может быть и как с этим бороться? Это сообщение отредактировал(а) DDX — 26.9.2006, 20:03 ——————— Учиться, учитьcя и ещё раз учиться |
||
|
|||
SPrograMMer |
|
||
Спамер Профиль
Репутация: 1
|
Верятно один из запросов, используемых в процедуре ничего не возвращает… а с результатом пытаются что-то сотворить….когда этого что-то нету… ——————— животное = зверь |
||
|
|||
DDX |
|
||
Шустрый Профиль
Репутация: 5
|
SPrograMMer, хранимка выполняет некоторые преобразования над данными, пихает их во временую таблицу и напоследок из неё селектит полученный результат… даже если ничего не выбрано, вернется просто пустой рекордсет со строкой заголовка.. Это сообщение отредактировал(а) DDX — 26.9.2006, 21:57 ——————— Учиться, учитьcя и ещё раз учиться |
||
|
|||
Fedia |
|
||||||
Опытный Профиль
Репутация: 3
|
DDX, замени
на
.
——————— Накануне решающей битвы |
||||||
|
|||||||
DDX |
|
||
Шустрый Профиль
Репутация: 5
|
Fedia,
——————— Учиться, учитьcя и ещё раз учиться |
||
|
|||
DDX |
|
||
Шустрый Профиль
Репутация: 5
|
ВСЁ! вопрос решен! чудес, понятное дело, не бывает! Это сообщение отредактировал(а) DDX — 27.9.2006, 14:13 ——————— Учиться, учитьcя и ещё раз учиться |
||
|
|||
|
Правила форума «Delphi: Базы данных и репортинг» | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |