powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ADOQuery.Active:=true -> ошибка
5 сообщений из 5, страница 1 из 1
ADOQuery.Active:=true -> ошибка
    #32078946
duha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет всем.

Delphi 6/ado, SQL server 2000.
написал текст запроса в поле adoquery.sql:

есть список клиентов, у них на руках карты (магнитные). это в базе храниться. при событии выбора клиента в датасете(связан с другим гридом) при помощи изменения параметра id в запросах показываю в другом гриде и ДБтексте список карт и их количество.

Код: plaintext
1.
2.
3.
4.
declare @cnt int
set @cnt=(select count(*) from cards where 
client_index= :id)
select @cnt as CardCount,
('Карт ( ' + convert(varchar,@cnt) + ' )') as CntText


вроде бы все правильно, тип параметра id ставил строковый или integer.
при попытке протестировать запрос выставлением параметра=скажем 4 и active=true,
дельфя говорит:
"ошибка синтаксиса или нарушение прав доступа."
если же написать client_index=4 прямо в запросе или вообще where ... выкинуть, все ОК.

как быть? похоже на ошибочный парсинг текста компонентом.

хотелось бы использовать настройку параметров вместо полной сборки текста запроса "налету".

и еще что правильнее:
Код: plaintext
set @cnt=... или select @cnt=...
имхо обе работают.
...
Рейтинг: 0 / 0
ADOQuery.Active:=true -> ошибка
    #32078948
Херург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй перед открытием запроса указать тип параметра и тип данных. Ну что-то типа:
ADOquery.Parameters.ParamByName('id').DataType:=ftInteger;
ADOquery.Parameters.ParamByName('id').Direction:=pdInput;

А потом уже запрос запускать.


SET или SELECT - отличаются что SET работает для одной переменной, а в SELECT сразу нескольким через запятую можно присвоить значения
...
Рейтинг: 0 / 0
ADOQuery.Active:=true -> ошибка
    #32079108
duha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Херургу:
попробовал.
что-то похожее на работу наблюдается когда сначала далаю active=true,
затем prepared=true. без настройки типов

достаточно сделать запрос по-навороченнее (добавить переменную вовнутрь),
так сразу начинается дельфянное вяканье про синтаксис или доступ (см. выше).
я без понятия что делать. ваять обходнгые способы (сборка на лету или СП) возможно, однако это крайняя мера т.к. лучше разобраться с этой задачкой про запуск куери с переменной и параметром.
...
Рейтинг: 0 / 0
ADOQuery.Active:=true -> ошибка
    #32079240
vladgorobin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня Delphi 5, SQL Server 2000, твой запрос сделал в TADODataSet (единственно подставил свои таблицы и поля), у меня все нормально работает:

declare @cnt int
set @cnt=(select count(*) from tblTabelUchet where
dreportdate= '20021210')
select @cnt as CardCount,
('Êàðò ( ' + convert(varchar,@cnt) + ' )') as CntText
Могу предложить следующие варианты:
1. Сделать запрос хранимой процедурой или
2. Убрать конвертацию в varchar, чтобы не делать declare @cnt (по моему, Дельфи любит очень простые запросы)
...
Рейтинг: 0 / 0
ADOQuery.Active:=true -> ошибка
    #32079789
duha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, попробую так.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ADOQuery.Active:=true -> ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]