![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка "CommandText does not return a result set".
Kolan © (2006-10-25 23:59:00)Здравствуйте,
Делаю такой запрос:
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;
Получаю ошибку как в сабже. Прочел на королевстве что дляADO QueryестьExcecSQL. А как быть сFADODataSet?
DrPass (2006-10-26 17:48:00) [21]А чем оно плохо? Используется для совместимости с другими Query, и просто копируется в CommandText датасета
Anatoly Podgoretsky (2006-10-26 17:40:00) [22]Наоборот полный зачет, и это не углубляясь во внутренне устройство.
DrPass (2006-10-26 17:36:00) [23]Не считается :)
Anatoly Podgoretsky (2006-10-26 17:00:00) [24]Как это нет, а SQL типа strings
DrPass (2006-10-26 16:57:00) [25]
> Anatoly Podgoretsky © (26.10.06 16:18) [10]
> Чего в нем удобного по сравнению с Dataset/Command?
> Кроме наличия перегрузок и некоторых ошибок
Никаких перегрузок и ошибок там нет (по крайней мере, по сравнению с ADODataSet) - TADOQuery прямой наследник TCustomADODataset + свойства SQL, RowsAffected и метод ExecSQL, и ничего боле. А удобство - очевидно. Унифицированный код, который при необходимости можно легко портировать на другой тип источников данных, да и просто новичку освоить легче, по любой книге о Delphi + BDE
Германн (2006-10-26 16:41:00) [26]
> Anatoly Podgoretsky © (26.10.06 16:32) [12]
>
>
> > А если Николай обидится
>
> С чего бы, он придерживает такой же позиции. А то что не захотел переключать раскладку, то за такое он не обижается.
Дык я не про позицию и не про раскладку, а про вторую букву в нике :-)
Anatoly Podgoretsky (2006-10-26 16:32:00) [27]
> А если Николай обидится
С чего бы, он придерживает такой же позиции.
А то что не захотел переключать раскладку, то за такое он не обижается. А вот если он пожелает подключиться и в очередной раз захочет выразить свое ФИ, правда я бы не стал, уже надоело это разжевывать в Базах.
Германн (2006-10-26 16:27:00) [28]
> но информацию по ним приводил Шикник в Базах.
А если Николай обидится? :-)
Anatoly Podgoretsky (2006-10-26 16:18:00) [29]Отказываться от очень удобного компонента
Чего в нем удобного по сравнению с Dataset/Command?
Кроме наличия перегрузок и некоторых ошибок, на которые я к счастью не нарывался, но информацию по ним приводил Шикник в Базах.
Зачем изучать несколько технологий и ломать голову, когда есть прямые, а не костыли над ними?
Применять конечно имеешь право и никто тебе не судья, но упорствовать в этом не является признаком профессионализма.
Shirson (2006-10-26 15:58:00) [30]Отказываться от очень удобного компонента, из-за того, что некоторые не умеют им пользоваться? Нах такое счастье.
ADOQuery самый удобный. Всё описанно в хелпе и ненужно в обход его изобретать собственную логику использования компонентов.
Ketmar (2006-10-26 14:27:00) [31]>[7] Плохиш(c) 26-Oct-2006, 13:51
>Представляешь, что будет, если хотя бы в одной из этих
>переменных будет свой апостров?
от "ничего страшного" до "ой, а почему у меня в базе нет ничего?" %-))
Плохиш (2006-10-26 13:51:00) [32]
> Крайний случай заблуждений в еоде выглядит так
> 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+ ')';
Представляешь, что будет, если хотя бы в одной из этих переменных будет свой апостров?
Anatoly Podgoretsky (2006-10-26 12:03:00) [33]Ты думаешь, что не вводит, наблюдение за форумами этого не подтверждает, при том желательно пройтись по всему приведеному списку.
Крайний случай заблуждений в еоде выглядит так
Q.Active := True;
Q.ExecSQL;
Q.Open;
Это реальный код из форумов.
DrPass (2006-10-26 09:50:00) [34]
> забудьте что есть такая штука как Query, она же только в
> заблуждения вводит
Глупости. ADOQuery ничем не отличается от ADODataSet, кроме нескольких свойств "для совместимости" и возможности исполнять не возвращающие НД команды. Кто сомневается, может посмотреть исходник в ADODB.pas
Anatoly Podgoretsky (2006-10-26 08:57:00) [35]
> Вот любители извращаться!
Любители шагать по граблям
Параметры
Параметры
Параметры
Anatoly Podgoretsky (2006-10-26 08:56:00) [36]Сколько раз говорили, забудьте что есть такая штука как Query, она же только в заблуждения вводит, поубивал бы Борланд, везде понавпихивали свои Tabe, Query, StoredProc - народу мозги затуманили.
Для базовой работы с базами нужны только две вещи - Dataset для запросов возвращающих набор данных или набор записей и Command для всего остального.
Вот остальное можно только выполнить, а слово это переводится на ангельский как Execute
evvcom (2006-10-26 08:28:00) [37]> [0] Kolan © (25.10.06 23:59)
> + #39+ SurName + #39+ ',' + #39+ Name + #39+
Вот любители извращаться! #39 - это что? Апостроф? А нормально написать не судьба? Чтобы читаемо было:
VALUES (''' + SurName + ''',''' +
Но еще более читабельно будет с параметрами:
'... VALUES (:SurName, :Name, :PatronymicName)';
Не так ли?
DrPass (2006-10-26 01:04:00) [38]Никак. Он предназначен для выборки, а не для вставки данных, о чем тебе и пытается сказать. Вставляй с помощью ADOQuery, что тебе мешает-то?