Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];

Вниз

Почему в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.056 c
15-1200926297
@!!ex
2008-01-21 17:38
2008.02.24
Помогите оплатить софтину через PayPal


6-1180084614
Dmitry_177
2007-05-25 13:16
2008.02.24
Продолжительное или разовое соединение


15-1201188142
Anatoly Podgoretsky
2008-01-24 18:22
2008.02.24
Что хотят, то и творят.


2-1201352975
tarasoff
2008-01-26 16:09
2008.02.24
dbf + delphi


2-1201517882
tomkat
2008-01-28 13:58
2008.02.24
данные фильтра





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский