Ошибка commandtext does not return a result set

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...'s user avatar

J…

31k6 gold badges66 silver badges143 bronze badges

asked May 26, 2016 at 11:56

haci aliyev's user avatar

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 Marinov's user avatar

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...'s user avatar

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.
сама не сильна , поэтому очень прошу помочь разобраться.
дело то в том что запрос ADOQuery2 и запрос QShum-одно и то же. и при попытке вывода отчета ошибка. может именно из за этого?
2 одинаковых запроса . такой смысл

Delphi
1
2
3
4
5
6
7
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('INSERT INTO shum (i_nomer_protokola, data_p,)VALUES (:N1,:N2)');
ADOQuery2.Parameters.ParamByName('N1').Value:=Edit1.Text;
ADOQuery2.Parameters.ParamByName('N2').Value:=DateTimePicker1.Date;
 
Qshum.Close;
Qshum.Open;

при предворительном просмотре отчета в RaveReporte поля из этой таблицы не отображаются, со всех других отображаются…
но в других один набор , а не два…
что делать?
еще и такая ошибка мелькала..
primary key.невозможно вставить повторяющийся ключ в объект

Добавлено через 23 часа 13 минут
эх…ну вот бы хоть кто-нибудь ….



0



1263 / 706 / 62

Регистрация: 21.12.2009

Сообщений: 2,255

24.04.2011, 05:18

2

Цитата
Сообщение от Fotttiniya
Посмотреть сообщение

дело то в том что запрос 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

Цитата
Сообщение от SAMZ
Посмотреть сообщение

Если действительно эти запросы одинаковы, то обратите внимание, запрос не селективный (у Вас прописан INSERT, а не SELECT). Такой запрос не создает набора данных и именно такое сообщение Вы и получили

как же это исправить? тут без INSERTa никак.. может можно его потом как то переделать?



0



SAMZ

1263 / 706 / 62

Регистрация: 21.12.2009

Сообщений: 2,255

24.04.2011, 19:31

4

Fotttiniya, Что и когда исправлять нужно решать в соостветствии с логикой работы приложения, но надо понимать, что если в какой-то момент времени в программе срабатывает

Delphi
1
Qshum.Open;

то к этому моменту в этом объекте обязан быть 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.
В таблице есть куча dbedit через них заношу информацию в таблицу. Есть 3 ячейки, сумма по договору и аванс — вносимые а доплата вычисляемая и надо в обработчике кнопки чтобы вносились в ячейку данные по формуле : доплата=сумма по договору — аванс;
и еще вопрос когда заношу даты в таблицу через datetimepicker почему автоматически добавляется время, а оно не нужно. не подскажете как его убрать?



0



xxbesoxx

Эксперт Pascal/Delphi

1134 / 615 / 129

Регистрация: 13.02.2009

Сообщений: 3,542

16.07.2013, 22:23

7

Цитата
Сообщение от Fotttiniya
Посмотреть сообщение

Приветствую вас господа программисты!ADOQuery2:CommandText does not return a result set- ошибка при попытке вывода отчета через RaveReport. База SQL Server приложение на delphi7.
сама не сильна , поэтому очень прошу помочь разобраться.
дело то в том что запрос ADOQuery2 и запрос QShum-одно и то же. и при попытке вывода отчета ошибка. может именно из за этого?
2 одинаковых запроса . такой смысл

Delphi
1
2
3
4
5
6
7
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('INSERT INTO shum (i_nomer_protokola, data_p,)VALUES (:N1,:N2)');
ADOQuery2.Parameters.ParamByName('N1').Value:=Edit1.Text;
ADOQuery2.Parameters.ParamByName('N2').Value:=DateTimePicker1.Date;
 
Qshum.Close;
Qshum.Open;

при предворительном просмотре отчета в RaveReporte поля из этой таблицы не отображаются, со всех других отображаются…
но в других один набор , а не два…
что делать?
еще и такая ошибка мелькала..
primary key.невозможно вставить повторяющийся ключ в объект

Добавлено через 23 часа 13 минут
эх…ну вот бы хоть кто-нибудь ….

Delphi
1
ADOQuery2.post;



0



669 / 559 / 242

Регистрация: 26.11.2012

Сообщений: 2,191

17.07.2013, 09:49

8

xxbesoxx, Я думаю с ответом немного задержался )))) так годика на 2 ))))



0



    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    ADOQuery — выдает ошибку
    , ADOQuery1:CommandText does not return a result set.

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,

      Соединил Вelphi7.0 c MySQL5.1 через driver ODBC.
      При выполнении SQL-запроса при помощи функции DELETE или load data infile сам запрос выполняется но возникает ошибка ADOQuery1:CommandText does not return a result set., а при выполнении функции SELECT ничего не возникает.

      Вопрос: Что это означает и стоит ли росстраиваться по этому поводу или просто взять данный кусок в try … Exept end; и забыть про него?


      Anatoly Podgoretsky



      Сообщ.
      #2

      ,

        Не возвращает, а ты наверно используешь Open.
        Выкини ADOQuery вообще, чтобы подобных ошибок в принципе не возникало и замени парой компонент.
        TAdoDataset для запросов возвращающих набор данных и TAdoCommand для остальных запросов.
        Борланд своим костылем ADOQuery/AdoTable/AdoStoredProc много вреда принес, аналогично для других технологий, не только АДО, поскольку эти костыли он воткнул везде.

        Master

        ViktorXP



        Сообщ.
        #3

        ,

          не открыва (ADOQuery1.Open) а просто выполняй запрос (ADOQuery1.ExecSQL;). и тогда будет все нормально


          kiber0net0



          Сообщ.
          #4

          ,

            ViktorXP спасибо , все работает :)
            Anatoly Podgoretsky благодарствую, на будущее учту, но сейчас нет времени розбираться.

            Добавлено
            Кстати, я так понимаю ошибка возникает потому что нельзя возратить никакого результат.
            Вопрос А нельзя ли возратить информацию которая появляется в MySQl под полученной информацией типа: «58 rows in set (0.00 sec)«?

            Master

            ViktorXP



            Сообщ.
            #5

            ,

              Цитата kiber0net0 @

              Кстати, я так понимаю ошибка возникает потому что нельзя возратить никакого результат.

              процедура Open отправляет данные и ждет результат. по истечению времени не дождавшись результата возвращает ошибку. ExecSQL — не ждет, она просто выполняет запрос.

              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

              0 пользователей:

              • Предыдущая тема
              • Delphi: Базы данных
              • Следующая тема

              Рейтинг@Mail.ru

              [ Script execution time: 0,0428 ]   [ 16 queries used ]   [ Generated: 22.09.23, 11:18 GMT ]  


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

              Поиск:

              Ответ в темуСоздание новой темы
              Создание опроса
              > CommandText does not return a result set, ни с того, ни с сего.. 

              V

                 

              Опции темы

              DDX
              Дата 26.9.2006, 20:01 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Шустрый
              *

              Профиль
              Группа: Участник
              Сообщений: 127
              Регистрация: 31.1.2005
              Где: Москва

              Репутация: 5
              Всего: 5

              странная проблема:
              есть программа на D7, использует для выгрузки отчетов хранимые процедуры на SQL Server 2000 через ADOStoredProc.open с последющей выгрузкой рекордсета в эксель.. всё прекрасно работало много месяцев, но вдруг в один прекрасный день хранимая процедура стала говорить: ‘ CommandText does not return a result set’. и все тут. даже не выполняясь, сразу же. при этом , при запуске вручную в Query Analyzer все замечательно

              ничего не менялось, ни программа, ни сами хранимки. сижу, ломаю голову, отчего это может быть и как с этим бороться?

              Это сообщение отредактировал(а) DDX — 26.9.2006, 20:03

              ———————

              Учиться, учитьcя и ещё раз учиться  

              PM MAIL WWW   Вверх
              SPrograMMer
              Дата 26.9.2006, 21:42 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Спамер :)
              **

              Профиль
              Группа: Участник
              Сообщений: 442
              Регистрация: 5.11.2004
              Где: Краснодар

              Репутация: 1
              Всего: 6

              Цитата(DDX @ 26.9.2006,  20:01)
               does not return a result set

              Верятно один из запросов, используемых в процедуре ничего не возвращает… а с результатом пытаются что-то сотворить….когда этого что-то нету…

              ———————

              животное = зверь
              законченный гентушник

              PM MAIL ICQ Jabber   Вверх
              DDX
              Дата 26.9.2006, 21:55 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Шустрый
              *

              Профиль
              Группа: Участник
              Сообщений: 127
              Регистрация: 31.1.2005
              Где: Москва

              Репутация: 5
              Всего: 5

              SPrograMMer
              но вручную-то запуск с теми же параметрами возвращает..

              хранимка выполняет некоторые преобразования над данными, пихает их во временую таблицу и напоследок из неё селектит полученный результат… даже если ничего не выбрано, вернется просто пустой рекордсет со строкой заголовка..

              Это сообщение отредактировал(а) DDX — 26.9.2006, 21:57

              ———————

              Учиться, учитьcя и ещё раз учиться  

              PM MAIL WWW   Вверх
              Fedia
              Дата 27.9.2006, 01:35 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Опытный
              **

              Профиль
              Группа: Участник
              Сообщений: 465
              Регистрация: 2.8.2006
              Где: первым встречаю р ассвет

              Репутация: 3
              Всего: 13

              DDX, замени 

              Код

              ADOStoredProc.open

               на

              Код

              ADOStoredProc.ExecProc


              Судя по справке Delphi, для вызова хранимых процедур небходимо исползовать именно ExecProc:

              Цитата
              ExecProc method (TADOStoredProc)

              Call ExecProc to execute a stored procedure.

              ———————

              Накануне решающей битвы
              Я иду, и надеждою зыбкой
              Озаряется эта дорога,
              Я мечтаю увидеть улыбку
              На лице победившего Бога…

              PM MAIL ICQ   Вверх
              DDX
              Дата 27.9.2006, 08:05 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Шустрый
              *

              Профиль
              Группа: Участник
              Сообщений: 127
              Регистрация: 31.1.2005
              Где: Москва

              Репутация: 5
              Всего: 5

              Fedia
              дело в том, что

              Цитата
              If an application is only interested in the result set returned by a stored procedure, call Open method for the TADOStoredProc component or set its Active property to true.

              ———————

              Учиться, учитьcя и ещё раз учиться  

              PM MAIL WWW   Вверх
              DDX
              Дата 27.9.2006, 08:50 (ссылка)
              | (нет голосов)
              Загрузка ... Загрузка …




              Быстрая цитата

              Цитата

              Шустрый
              *

              Профиль
              Группа: Участник
              Сообщений: 127
              Регистрация: 31.1.2005
              Где: Москва

              Репутация: 5
              Всего: 5

              ВСЁ! вопрос решен! чудес, понятное дело, не бывает!
              обнаружен глюк, когда в зависимости от передаваемых параметров длина динамически формируемого запроса превышала максимальную длину в 8000 символов! 
              SPrograMMer  был практически прав! 
              Всем спасибо за участие!

              Это сообщение отредактировал(а) DDX — 27.9.2006, 14:13

              ———————

              Учиться, учитьcя и ещё раз учиться  

              PM MAIL WWW   Вверх



















              Ответ в темуСоздание новой темы
              Создание опроса
              Правила форума «Delphi: Базы данных и репортинг»
              Vit
              Петрович

              Запрещено:

              1. Публиковать ссылки на вскрытые компоненты

              2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

              Обязательно указание:

              1. Базы данных (Paradox, Oracle и т.п.)

              2. Способа доступа (ADO, BDE и т.д.)

              • Литературу по Дельфи обсуждаем здесь
              • Действия модераторов можно обсудить здесь
              • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
              • Вопросы по реализации алгоритмов рассматриваются здесь
              • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи
              • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

              FAQ раздела лежит здесь!


              Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

               

              0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
              0 Пользователей:
              « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »

              Понравилась статья? Поделить с друзьями:
            • Ошибка cpu на материнской плате msi
            • Ошибка cpu при запуске компьютера
            • Ошибка com при установке компаса
            • Ошибка cpu на экскаваторе
            • Ошибка com порта system io ports serialerrorreceivedeventargs