![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему в QueryAnalyzer'е скрипт работает, а у меня нет?
Kolan © (2007-10-10 09:20:00)Здравствуйте,
Есть скрип. Если его запустить в QueryAnalyzer (MS SQL Server 2000), то он выполняется нормально.
если так:
var
Query: TADOQuery;
begin
Result := 1;
if Assigned(Script) then
begin
Query := TADOQuery.Create(nil);
try
Result := 0;
Query.Connection := FDBConnection;
Query.Prepared := True;
Query.SQL.Text := Script.ScriptText.Text;
Query.ExecSQL;
Result := Query.RowsAffected;
finally
Query.Free;
end;
end;
end;
Тo выдает ошибку:
Неправильно определен объект Parameter. Предоставлены несовместимые или неполные сведения (EOleException)
Что может быть не так?
Kolan (2007-10-10 16:55:00) [1]> я запомню
Да я уже тоже запомнил
> неблагодарный
За что конкретно надо отблагодарить? За «фыркать» или за «тормоЗ»? Вже еще по факсу благодарность послать?
Правильный Вася (2007-10-10 16:16:00) [2]неблагодарный
я запомню
был о тебе лучшего мнения
Kolan (2007-10-10 13:43:00) [3]> фыркать
б чеж ты так грубишь
Фтопку такие советы, даже если они и правильные. :(
Правильный Вася (2007-10-10 13:38:00) [4]я тебе в [13] так и сказал
только вставлять нужно ДО присваивания тескта запроса
читать нужно внимательнее, а не фыркать
Kolan (2007-10-10 13:13:00) [5]> тогда мучайся с неуществующими параметрами дальше
Мля так и говори что местами надо поменять, а то когда ругаются есть желание только послать
Разглядел что в [17] имелось ввиду. Работает.
Правильный Вася (2007-10-10 12:30:00) [6]
> Kolan © (10.10.07 12:24) [18]
тогда мучайся с неуществующими параметрами дальше
Anatoly Podgoretsky (2007-10-10 12:25:00) [7]Это последствия CopyPaste
Kolan (2007-10-10 12:24:00) [8]> ты чо, тормоЗ?
Учись читать де ил:
[7] Kolan © (10.10.07 10:42)
> странная логика, 0 выводим, а если RowsAffected > 0, то
> ничего не изменилось
Да с логикой напортачил Местами поменял:
if RowsAffected = 1 then
GetScriptResultView.ShowError('Ioeaea')
else
if RowsAffected = 0 then
GetScriptResultView.ShowInfo(Format('Ie?aai ia eciaieeinu', [RowsAffected]))
else
GetScriptResultView.ShowOk(DefineStringsCount(RowsAffected));
ПолучилосьОдна строка изменина, так и есть RowsAffected = 1
Впринципе пойдет, вопрос закрыт.
Правильный Вася (2007-10-10 11:40:00) [9]
> > только вставлять нужно ДО присваивания тескта запросаНет
> это не получится скрипт генерится в одном месте, а че с
> ни мотом будет еще неиззвестно, а делать генерацию в разных
> местах — плохо…
ты чо, тормоЗ?
вот так надо:
Query := TADOQuery.Create(nil);
try
Result := 0;
Query.Connection := FDBConnection;
Query.ParamCheck := False;
Query.SQL.Text := Script.ScriptText.Text;
Query.ExecSQL;
ЮЮ (2007-10-10 11:35:00) [10]
> if RowsAffected = 0 then
> GetScriptResultView.ShowOk(DefineStringsCount(RowsAffected))
> else
> GetScriptResultView.ShowInfo(Format('Ничего не
> изменилось', [RowsAffected]));
странная логика, 0 выводим, а если RowsAffected > 0, то ничего не изменилось
Kolan (2007-10-10 11:34:00) [11]> только вставлять нужно ДО присваивания тескта запроса
Нет это не получится скрипт генерится в одном месте, а че с ни мотом будет еще неиззвестно, а делать генерацию в разных местах плохо
> выводить куда?
Сорри, не так выразился не выводить, а вставлять в скрипт
А нет команды
Query.ОтстаньСоСвоимиПараметрами
?
> RowsAffected выдает результат последнего.
Аааа, вот в чем цимус Как же получить все сообщения
clickmaker (2007-10-10 11:14:00) [12]
> [11] Kolan © (10.10.07 11:00)
RowsAffected выдает результат последнего.
А у тебя там 0 row(s) affected)
Правильный Вася (2007-10-10 11:10:00) [13]
> Блин а как заставить не реагировать на «:»?
см. [5]
только вставлять нужно ДО присваивания тескта запроса
> Время я как выводить буду???
выводить куда?
Kolan (2007-10-10 11:02:00) [14]Блин а как заставить не реагировать на «:»? Время я как выводить буду???
Kolan (2007-10-10 11:00:00) [15]> убери коментарии и все.
Да, дело в комментариях было.
Еще вопросик остался
Эта пограмма создаёт скрипты, и хотелось бы тут же их запустить и узнать что все сработало.
Вызываю функцию из [0] так:
RowsAffected := GetDataAccessFacade.ExecuteScript(Script);
if RowsAffected = 1 then
GetScriptResultView.ShowError('Ioeaea')
else
if RowsAffected = 0 then
GetScriptResultView.ShowOk(DefineStringsCount(RowsAffected))
else
GetScriptResultView.ShowInfo(Format(' Ничего не изменилось', [RowsAffected]));
Вот на один и тот же скрип Query Analyzer выдает:
(1 row(s) affected)
{ много раз 1 row(s) affected }
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(44 row(s) affected)
(0 row(s) affected)
Checking identity information: current identity value '47', current column value '47'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
А моя программаНичего не изменилось
Как бы вывести нечто похожее на то, что показывает Query Analyzer
stanislav (2007-10-10 10:53:00) [16]убери коментарии и все.
stone (2007-10-10 10:51:00) [17]Попробуй заменить TADOQuery на TADODataSet или TADOCommand
stanislav (2007-10-10 10:51:00) [18]--Creation date and time: „10.10.2007 10:25:17“--
здесь :Определяется как параметры
Kolan (2007-10-10 10:42:00) [19]
> Query.ParamCheck:=False;
То же самое
Kolan (2007-10-10 10:39:00) [20]> А это у тебя что такое?
Ну там тоже самое(тот жеINSERT INTO @ExpertAppraisalDefectTempTable) много раз, только данные другие