Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему в QueryAnalyzer'е скрипт работает, а у меня нет?


Страницы:   1 2

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) много раз, только данные другие…


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо