Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.24;
Скачать: CL | DM;

Вниз

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

 
Kolan ©   (2007-10-10 09:20) [0]

Здравствуйте,
 Есть скрип. Если его запустить в 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)

Что может быть не так?


 
ЮЮ ©   (2007-10-10 09:58) [1]


> Query.Prepared := True;

Это лишнее для запроса вызываемого единожды. Тем более, что текст запроса будет задан только в следующей строке кода


 
Маша Шрайбер ©   (2007-10-10 10:10) [2]

Сам текст запроса?


 
Kolan ©   (2007-10-10 10:21) [3]

--Created by KSQLServerScriptCreator.--
--Creation date and time: „10.10.2007 10:25:17“--
--Used data base: „Stomatology“--
--Used table: „ExpertAppraisalDefect“--

--Script fot table „ExpertAppraisalDefect“ start.--

DECLARE @ExpertAppraisalDefectTempTable TABLE (cddefect1 int, DefectName1 varchar(250), cdgroup1 int, Factor1 float(8));

INSERT INTO @ExpertAppraisalDefectTempTable(cddefect1, DefectName1, cdgroup1, Factor1)
 VALUES(1, "Нет описания жалоб", 1, 0.100000001490116);

{&#133}

INSERT INTO @ExpertAppraisalDefectTempTable(cddefect1, DefectName1, cdgroup1, Factor1)
 VALUES(45, "Диагноз поставлен не в соответствии с клинической классификацией", 7, 0.100000001490116);

INSERT INTO @ExpertAppraisalDefectTempTable(cddefect1, DefectName1, cdgroup1, Factor1)
 VALUES(46, "При наличии сопутствующего заболеван. не выставлен соответств. диагноз", 7, 0.025000000372529);

INSERT INTO @ExpertAppraisalDefectTempTable(cddefect1, DefectName1, cdgroup1, Factor1)
 VALUES(47, "Не применялись современные показанные лечебные технологии  ", 4, 0.25);

SET IDENTITY_INSERT ExpertAppraisalDefect ON;

UPDATE ExpertAppraisalDefect
 SET DefectName = T.DefectName1, cdgroup = T.cdgroup1, Factor = T.Factor1
 FROM @ExpertAppraisalDefectTempTable AS T
 WHERE (cddefect = T.cddefect1);

INSERT INTO ExpertAppraisalDefect(cddefect, DefectName, cdgroup, Factor)
 SELECT cddefect1, DefectName1, cdgroup1, Factor1 FROM @ExpertAppraisalDefectTempTable AS T
 WHERE NOT EXISTS(SELECT * FROM ExpertAppraisalDefect WHERE (cddefect = T.cddefect1))

SET IDENTITY_INSERT ExpertAppraisalDefect OFF;
DBCC CHECKIDENT(ExpertAppraisalDefect, RESEED);

--Script fot table „ExpertAppraisalDefect“ end.--

--Regards to KSoftWare®.--


 
stone ©   (2007-10-10 10:25) [4]


> {…}

А это у тебя что такое?


 
Правильный Вася   (2007-10-10 10:35) [5]


> Неправильно определен объект Parameter

Query.ParamCheck:=False;


 
Kolan ©   (2007-10-10 10:39) [6]

> А это у тебя что такое?

Ну там тоже самое(тот же INSERT INTO @ExpertAppraisalDefectTempTable) много раз, только данные другие&#133


 
Kolan ©   (2007-10-10 10:42) [7]


> Query.ParamCheck:=False;

То же самое&#133


 
stanislav ©   (2007-10-10 10:51) [8]

--Creation date and time: „10.10.2007 10:25:17“--
здесь : Определяется как параметры


 
stone ©   (2007-10-10 10:51) [9]

Попробуй заменить TADOQuery на TADODataSet или TADOCommand


 
stanislav ©   (2007-10-10 10:53) [10]

убери коментарии и все.


 
Kolan ©   (2007-10-10 11:00) [11]

> убери коментарии и все.

Да, дело в комментариях было.

Еще вопросик остался&#133

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

Вызываю функцию из [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)

{&#133много раз 1 row(s) affected &#133}

(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&#133


 
Kolan ©   (2007-10-10 11:02) [12]

Блин а как заставить не реагировать на «:»? Время я как выводить буду???


 
Правильный Вася   (2007-10-10 11:10) [13]


> Блин а как заставить не реагировать на «:»?

см. [5]
только вставлять нужно ДО присваивания тескта запроса

> Время я как выводить буду???

выводить куда?


 
clickmaker ©   (2007-10-10 11:14) [14]


> [11] Kolan ©   (10.10.07 11:00)

RowsAffected выдает результат последнего.
А у тебя там 0 row(s) affected)


 
Kolan ©   (2007-10-10 11:34) [15]

> только вставлять нужно ДО присваивания тескта запроса

Нет это не получится скрипт генерится в одном месте, а че с ни мотом будет еще неиззвестно, а делать генерацию в разных местах — плохо&#133


> выводить куда?

Сорри, не так выразился не выводить, а вставлять в скрипт&#133

А нет команды
Query.ОтстаньСоСвоимиПараметрами
?

> RowsAffected выдает результат последнего.

Аааа, вот в чем цимус&#133 Как же получить все сообщения&#133


 
ЮЮ ©   (2007-10-10 11:35) [16]


> if RowsAffected = 0 then
>          GetScriptResultView.ShowOk(DefineStringsCount(RowsAffected))
>        else
>          GetScriptResultView.ShowInfo(Format("Ничего не
> изменилось", [RowsAffected]));


странная логика, 0 выводим, а если RowsAffected > 0, то ничего не изменилось


 
Правильный Вася   (2007-10-10 11:40) [17]


> > только вставлять нужно ДО присваивания тескта запросаНет
> это не получится скрипт генерится в одном месте, а че с
> ни мотом будет еще неиззвестно, а делать генерацию в разных
> местах — плохо…

ты чо, тормоЗ?
вот так надо:
  Query := TADOQuery.Create(nil);
  try
    Result := 0;
    Query.Connection := FDBConnection;
    Query.ParamCheck := False;
    Query.SQL.Text := Script.ScriptText.Text;
    Query.ExecSQL;


 
Kolan ©   (2007-10-10 12:24) [18]

> ты чо, тормоЗ?

Учись читать де&#133ил:
[7] Kolan ©   (10.10.07 10:42)


> странная логика, 0 выводим, а если RowsAffected > 0, то
> ничего не изменилось

Да с логикой напортачил&#133 Местами поменял:
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&#133

Впринципе пойдет, вопрос закрыт.


 
Anatoly Podgoretsky ©   (2007-10-10 12:25) [19]

Это последствия CopyPaste


 
Правильный Вася   (2007-10-10 12:30) [20]


> Kolan ©   (10.10.07 12:24) [18]

тогда мучайся с неуществующими параметрами дальше


 
Kolan ©   (2007-10-10 13:13) [21]

> тогда мучайся с неуществующими параметрами дальше

Мля так и говори что местами надо поменять, а то когда ругаются есть желание только послать&#133

Разглядел что в [17] имелось ввиду. Работает. &#133


 
Правильный Вася   (2007-10-10 13:38) [22]

я тебе в [13] так и сказал
только вставлять нужно ДО присваивания тескта запроса
читать нужно внимательнее, а не фыркать


 
Kolan ©   (2007-10-10 13:43) [23]

> фыркать

б&#133 чеж ты так грубишь&#133

Фтопку такие советы, даже если они и правильные. :(


 
Правильный Вася   (2007-10-10 16:16) [24]

неблагодарный
я запомню
был о тебе лучшего мнения


 
Kolan ©   (2007-10-10 16:55) [25]

> я запомню

Да я уже тоже запомнил&#133


> неблагодарный

За что конкретно надо отблагодарить? За «фыркать» или за «тормоЗ»? Вже еще по факсу благодарность послать?



Страницы: 1 вся ветка

Текущий архив: 2008.02.24;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.016 c
15-1201244935
oldman
2008-01-25 10:08
2008.02.24
Татьянин день


15-1200776972
Kostafey
2008-01-20 00:09
2008.02.24
С днем рождения ! 20 января


11-1181383929
rvi
2007-06-09 14:12
2008.02.24
Благодарность


2-1201192492
q1485
2008-01-24 19:34
2008.02.24
Запуск программы в модальном режиме


8-1174828087
KOSik
2007-03-25 17:08
2008.02.24
Скругление угла